私はAmazon Linuxを使用しています。ディレクトリ内のファイルを削除するように設計されたこのような文があります。
/bin/find $JBOSS_HOME/standalone/tmp/vfs -mindepth 1 -mmin +1441 -exec rm -rf {} \;
しかし、これにより、次のような声明がたくさん発生します。
/bin/find: `/usr/java/jboss/standalone/tmp/vfs/deployment2b6836209f40596a': No such file or directory
/bin/find: `/usr/java/jboss/standalone/tmp/vfs/deployment1fae3ca49edb3384': No such file or directory
/bin/find: `/usr/java/jboss/standalone/tmp/vfs/deploymenta2b0c99bfdd7f444': No such file or directory
...
私のステートメントで存在しないファイルを検索しないようにするか、少なくともこれらのエラーをすべて削除する方法はありますか?
答え1
コマンドは、最近一部のファイルが変更された場合でも、1 日間変更されていないディレクトリを削除します。
これがあなたが望むものであると仮定すると、スティーブン・チャジェラスそしてトリガーコメントには2つの解決策が提案されている。あなたが直面している問題は、find
ディレクトリを削除するように指示し、ディレクトリに移動してその中に一致するファイルがあるかどうかを確認しようとしていることです。
渡すと、
-depth
ディレクトリfind
の内容が最初に処理され、ディレクトリ自体が最後に処理されます。これは、後で削除されるディレクトリの内容を分析するのに時間を無駄にします。find $JBOSS_HOME/standalone/tmp/vfs -depth -mindepth 1 -mmin +1441 -exec rm -rf {} \;
削除されたディレクトリに移動しないことを
-prune
示すために使用されます。find
find $JBOSS_HOME/standalone/tmp/vfs -mindepth 1 -mmin +1441 -exec rm -rf {} \; -prune
古いファイルだけを削除したい場合はfind
教えてください。-delete
電話の代わりに使用することができますrm
。
find $JBOSS_HOME/standalone/tmp/vfs -mmin +1441 -type f -delete
その後、空のディレクトリを削除できます。
find -depth $JBOSS_HOME/standalone/tmp/vfs -type d -empty -delete
または、2つを組み合わせて削除する必要があるファイルを削除してから、ディレクトリを削除します。
find $JBOSS_HOME/standalone/tmp/vfs -depth -mindepth 1 -mmin +1441 -type f -delete -o -type d -empty -delete