検索:そのファイルまたはディレクトリはありません。

検索:そのファイルまたはディレクトリはありません。

なぜ

$ while true ; do 'date; time find /tmp/test -type f \
  -exec cp /dev/null {} \;';sleep 3600; done

動作せず、代わりにエラーメッセージが返されます。

-bash: date; time find /tmp/test -type f -exec cp /dev/null {} \;: No such file or directory

エスケープしようとしましたが、;まだ{}同じエラーが発生します。はい、ディレクトリがあります/tmp/test

答え1

引数はdo単一のコマンドであり、追加のコマンドは一連のコマンドを使用します。

while true ; do date ; find ... ; sleep 3600 ; done

答え2

while true; do
    date
    time find /tmp/test -type f -exec cp /dev/null {} \;
    sleep 3600
done

コマンドの一重引用符のため、シェルは引用符付き文字列を実行するコマンドの名前として解釈しますが、それが見つからないため、特定のエラーが発生します。

1時間ごとにファイルを消去するもう1つの方法/tmp/testは、次のスケジュールに従ってcronjobを使用することです。

0 * * * * find /tmp/test -type f -exec cp /dev/null {} \;

答え3

引用符を削除すると、期待どおりに機能します(たとえば、2つのセミコロンが連続している必要があります)。

関連情報