find -execにシェルスクリプトを呼び出す方法は?

find -execにシェルスクリプトを呼び出す方法は?

最後の答え(im3r3k)から取得:ディレクトリツリー全体を再帰的に破砕する方法は?

find以下の説明に従って、シェルスクリプトを呼び出すコマンドを取得しようとしています。

私が今まで試したこと:

find /home/shredtest/* -depth -exec /home/test.sh {}\;

/home/shredtest内容を破砕したいディレクトリはどこにあり(それ/home/shredtest自体は削除しない)、/home/test.sh実行したいスクリプトはどこにありますかchmod +x /home/test.sh

上記のコマンドはfind以下を返します。

検索:-exec CMDは ';'で終わる必要があります。

私も次のことを試しました。

find /home/shredtest/* -depth -exec /home/test.sh "{}"\;
find /home/shredtest/* -depth -exec /home/test.sh {}\;
find /home/shredtest/* -depth -exec sh /home/test.sh "{}"\;
find /home/shredtest/* -depth -exec sh \/home\/test.sh {}\;
find /home/shredtest/* -depth -exec sh \/home\/test.sh "{}"\;

これらはすべて同じエラーを返します。

だから:

  1. なぜ-execセミコロンが見えないのですか?きっとそこにいたが脱出したのを見て他に問題があるのは間違いありません。私はそれを見ることができません。
  2. 私はこれを正しい方向に進めていますか、それともこれを達成するより良い方法がありますか?

ベストアンサー1

;別の引数でなければなりませんfind

find /home/shredtest/ -depth -exec /home/test.sh "{}" \;

{}との間のスペースに注意してください\;)。後ろに-exec:

find の次の引数は、すべて「;」で構成される引数が表示されるまで、コマンドの引数として扱われます。

(からman find)。つまり、引数には以下を含める必要があります。完全パラメータリストを停止します;

また、「+」を使用して複数のファイルパラメータを一度に渡すこともできます。このパラメーターも独自のパラメーターでなければなりません。


また、inは不要find /home/shredtest/*です*findディレクトリの内容自体は*シェルによってブラウズされ、拡張されます(時々正確な結果が得られない場合があります)。

おすすめ記事