私のfind
コマンドは次のとおりです。
find /jobs/logs/* -prune -name '*.log' -type f -mtime +1 |
while read LOGFILE
do
echo $LOGFILE
done
次のエラーが原因でこの操作が失敗しました。
/usr/bin/find: arg list too long
誰でもこの問題を解決する方法を提案できますか?
(これが続く私の前の質問.)
答え1
ディレクトリを繰り返してみましょうfind
。それがまさにそのことです!マイベース以前の回答:
find /jobs/logs/. -name . -o -type d -prune -o
-type f -mtime +1 -exec sh -c 'echo "$0"' {} \;
-exec
それにもかかわらず、私がコマンドを呼び出したことを忘れないでくださいfind
。それがまさにコマンドの目的です。
また、read LOGFILE
実際に参考にしてください。いいえ入力行を読みます。先行スペースを削除し、バックスラッシュを解釈します。 1行を読む信頼できる方法はですIFS= read -r LOGFILE
。
答え2
find
コマンドを次に変更してみてください。
find /jobs/logs/. ! -name . -prune -name '*.log' -type f -mtime +1
これは、ディレクトリをfind
除いて.
ダウンしないように、残りのすべてのディレクトリをクリーンアップすることを意味します。
詳しくはこのページをご覧ください。ポータブルカレントディレクトリに検索を制限する