番号で始まるディレクトリ内のすべてのファイルを削除する必要があるシェルスクリプトがあります。このファイルセットは、毎日削除する必要のある数十万のファイルを含むように成長しました。スクリプトには次の行が含まれています。
rm -f /my/dir/11*
rm -f /my/dir/12*
(( etc ))
rm -f /my/dir/1*
rm -f /my/dir/2*
そして、私はすべての行のエラーメッセージを受け取ります
line 1: /usr/bin/rm: Argument list too long
行を次のように置き換えようとしました
ls -d /my/dir/11* | xargs rm
しかしls -d
、同じエラーメッセージが表示されます。
何百ものファイル名の順列を含むようにリストを拡大せずに、これらのファイルを削除するにはどうすればよいですか?
相対パスを取得してに渡すrm
場合は、find
次のコマンドを使用できます。使用例として、次のコマンドを実行します。
find /my/dir -iname '[0-9]*' -type f
これにより、数字で始まるすべてのファイルが返されます。そのリストが削除したいものである場合は、以下をfind
使用してリストを削除してください-delete
。
find /my/dir -iname '[0-9]*' -type f -delete
がんばろう!
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加