1. ホーム
  2. linux

[解決済み] rm, cp, mvコマンドで引数リストが長すぎるというエラーが発生する。

2022-03-21 18:22:59

質問

UNIXのあるディレクトリの下に数百枚のPDFがあります。PDFの名前はとても長いです(約60文字)。

以下のコマンドで全てのPDFをまとめて削除しようとしたところ

rm -f *.pdf

以下のようなエラーが発生します。

/bin/rm: cannot execute [Argument list too long]

このエラーの解決策を教えてください。 このエラーは mvcp というコマンドもあるのでしょうか?もしそうなら、これらのコマンドをどのように解決するのでしょうか?

どのように解決するのですか?

この現象が起こる理由は、bashが実際にアスタリスクをマッチするファイルすべてに展開し、非常に長いコマンドラインを生成するためです。

これを試してみてください。

find . -name "*.pdf" -print0 | xargs -0 rm

警告 これは再帰的な検索であり、サブディレクトリ内のファイルも同様に検索(および削除)されます。さらに -f は、確認が不要な場合のみ、rmコマンドに追加してください。

以下のようにして、コマンドを非再帰型にすることができます。

find . -maxdepth 1 -name "*.pdf" -print0 | xargs -0 rm

もう一つの方法として、find の -delete フラグを使用します。

find . -name "*.pdf" -delete