GNUとUnixのコマンド、リポジトリとパッケージ管理、ハードウェア・ディスク・パーティション・ファイルシステム
findコマンドで検索したファイル一覧をrmコマンドに渡して削除したいが、ファイル名にスペースが含まれる可能性がある。この場合でも安全に削除できる方法として適切なものはどれか。
- Afind . -name "*.tmp" | rm
- ✓find . -name "*.tmp" -print0 | xargs -0 rm
- Cfind . -name "*.tmp" | xargs rm
- Dfind . -name "*.tmp" -exec echo rm {} \;
解説
find -print0とxargs -0の組み合わせは、ファイル名をNUL文字で区切って受け渡すため、ファイル名にスペースや改行が含まれていても正しく1つのファイル名として扱える。
根拠1.03.3 ストリーム、パイプ、リダイレクトの使用