Perlのunix findコマンドでリストを使用して接続を解除できますか?

Perlのunix findコマンドでリストを使用して接続を解除できますか?

複数のサーバーから何千ものファイルを削除してみてください。
rm動作しません。定期的に削除を実行する
一般的なスクリプトを作成しましたcron

...  
/bin/perl -e 'unlink ( <`find ${DIRECTORY} -name "*.${FILETYPE}" -type f -mtime +${DELETE_OLDER_THAN}`> ) or die "Nothing deleted\n" ' >> ${REMOVAL_LOGFILE} 2>&1  
...  

私は何を削除したいかについて非常に具体的に言いたいと思います。この場合、許可されています:/
より良いと思うので、Perlを使用していますか?-exec rm {}
find

ベストアンサー1

findそのタスクをサポートすることで、-delete複数の削除プロセスを作成することなく、できるだけ早い速度を得ることができます。

find "$DIRECTORY" -name "*.$FILETYPE" -type f -mtime +"$DELETE_OLDER_THAN" \
    -delete -print >> "$REMOVAL_LOGFILE" 2>&1

-exec rm {} \;各削除操作ごとに新しいプロセスが作成されるため、速度が遅くなる可能性があります。多数のファイルのプロセスを作成するので、持っている場合はfind高速-exec rm {} +です。rmしかし、すべてのシングルスレッドソリューションの中で最も速いのは-delete

もっと複雑な場合は、find .. -deleteディレクトリツリーの各ディレクトリからプロセスを分岐し(少なくとも一部は)並列に実行することができます。しかし、私はあなたがどのように多くのディレクトリを扱っているのか分からないので、これが純利益であるかどうかはわかりません。

おすすめ記事