ファイルのファイル名リストに対してコマンドを実行するには?

ファイルのファイル名リストに対してコマンドを実行するには?

削除したいファイルの名前をファイルにリストしておきました。rmファイルを1つずつ削除するようにコマンドにファイルを渡すにはどうすればよいですか?

答え1

1行に1つのファイルがある場合、1つのアプローチは次のとおりです。

tr '\n' '\0' < list_of_files_to_be_deleted.txt | xargs -0 -r rm --

ファイルリストは、trファイル区切り文字を改行からヌルバイトに変更するコマンドへの入力として提供され、コマンドは入力xargsからヌルバイトで区切られたファイルを読み取り、引数として追加されたファイルを使用してrmコマンドを開始します。

答え2

上記の答えは、スペースと「奇妙な文字」を持つファイル名を処理することに最善を尽くすので、これは良いことです。しかし、ファイル名が正常な場合、最も簡単な方法は次のとおりです(警告、恥ずかしいことです!)。

rm $(< /the/file/with/names)

通常のシェルの場合:

rm `cat /the/file/with/names`

関連情報