🦒

rmにワイルドカードを与えるとArgument list too longとエラーが出る

2022/03/26に公開

ワイルドカードが展開された結果として、引数の数が多すぎるとエラーが返るようです。

$ rm logs/*.json
bash: /bin/rm: Argument list too long

ファイルのリスト作成を find に任せ、 rm は渡された個々のファイルを削除するように変更します。

$ find logs -name *.json | xargs rm

何をもって too long とするかは、 ARG_MAX という構成値によるようです。

$ getconf ARG_MAX
1048576

これは引数の数そのものではないとのことでした[1]

大量のJSONがログとして出力されており削除しようとしたところ、このエラーに行き当たりました。他のファイルも入っており、またディレクトリそのものは保持したい場合に必要な対応となります。

脚注
  1. linux - Maximum number of Bash arguments != max num cp arguments? - Stack Overflow ↩︎

Discussion