-bash: /bin/rm: Argument list too long と言われる場合は xargs を使う

以下のように2万ページのキャッシュを削除しようとしました。

1
rm ./hoge_*.php

しかし以下のようなエラーが出ました。

1
-bash: /bin/rm: Argument list too long

数が多すぎるので削除できません。なら一つずつ実行する手もあるかもしれませんが、それでは日が暮れるまで削除し続けれなければいけないので困ります。

xargs で必要最低限の回数だけ rm を実行する

このような場合は find でファイルを検索して xargs に最適な数ずつ rm で削除するようにしてもらえば良いです。xargs はそれを実現してくれる大変便利なコマンドです。

1
find ./ -name 'hoge_*.php' | xargs rm

以下のページが参考になりました。

スペースが含まれているファイルを削除する

しかし以上で紹介したコマンドではスペースが含まれているファイルを削除できないらしいです。そのため以下のような書き方をしなければいけません。まだ私は試したことありません。

1
find ./ -name 'hoge_*.php' -print0 | xargs -0 rm

以下のページが大変参考になりました。

コメント

コメントは受け付けていません。