ファイルを削除するための短いコマンド

ファイルを削除するための短いコマンド

私たちのWebサーバーはもともと他の会社によって維持されていました。彼らはキャッシュファイルをクリーンアップするための短いスクリプトを書いた。そのファイルには次のような数行があります。

/usr/bin/find /var/www/cache/blah/ |xargs /bin/rm -f >/dev/null 2>&1

ただ書けない理由がありますか?

/bin/rm -f /var/www/cache/blah/*

ファイルを削除?特定の標準が必要なときに使用していることがわかりますが、findこの場合は見つからないようです。

ベストアンサー1

find+を使用する理由を考えてみましょうxargs

  • キャッシュされたファイルが多すぎる場合を処理します。これはrm、1つのコマンドのみを実行するとエラーになります。

  • ワイルドカードは*隠しファイルを拡張しません。

  • 再帰的に作業します。

ただし、このfind+はxargsフィルタを追加しないとfind結果にディレクトリとファイルが含まれているため効率的ではありません。ディレクトリで実行すると/bin/rm -fエラーが発生し、その場所はにリダイレクトされますstderrstdout名前/dev/nullに特殊文字を含むファイルに対してもコマンドは失敗します。

改善されたソリューションは次のとおりです。

find /var/www/cache/blah -type f -exec rm -f -- {} +

findPOSIXlyですべての作業を実行し、フォークを最小限に抑えることがより効率的ですrm

おすすめ記事