rm、cp、mv コマンドの引数リストが長すぎるというエラー 質問する

rm、cp、mv コマンドの引数リストが長すぎるというエラー 質問する

UNIX のディレクトリに数百の PDF があります。PDF の名前は非常に長いです (約 60 文字)。

次のコマンドを使用してすべての PDF をまとめて削除しようとすると:

rm -f *.pdf

次のエラーが発生します:

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

このエラーの解決方法は何ですか? このエラーは コマンドでも発生しますかmv?cp発生する場合、これらのコマンドをどのように解決しますか?

ベストアンサー1

これが起こる理由は、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

おすすめ記事