問題
コマンドラインから多数のファイルをリストまたは操作しようとすると、次のエラーが発生します:
$ ls -l *.xml | wc -l bash: /bin/ls: Argument list too long 0
$ rm *.xml bash: /bin/rm: Argument list too long
または、find コマンドを使用して多数のファイルを削除しようとすると、次のエラー メッセージが表示されて失敗します:
$ find /u01/oracle/apps/fs1/EBSapps/appl/xdo/12.0.0/temp/*.xml -mtime +120 -exec rm -v {} \; bash: /usr/bin/find: Argument list too long
解決策
カーネルによってコマンド ラインに大きな制限が課されており、上記のエラーは制限に達したことを示しています。
これを回避するには、標準入力からファイル名のリストを受け取り、コマンドを実行する xargs を使用できます。以下のように、「find」を「xargs」と組み合わせて使用できます。
# find . -type f -name '*.xml' | xargs rm
注意 :上記のコマンドは、確認なしで、現在のディレクトリにある .xml 拡張子を持つすべてのファイルを削除します。実行する前に、必要なファイルのバックアップを取ることをお勧めします。テスト マシンで検証し、実稼働マシンに進む前にチェックすることは常に良いことです。