ファイル内のファイル名のリストでコマンドを実行するにはどうすればよいですか?


回答:


11

1行に1つのファイルがある場合、それを行う1つの方法は次のとおりです。

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

ファイルリストはtrコマンドへの入力として与えられ、ファイルセパレーターを改行からヌルバイトに変更し、コマンドはヌルバイトでxargs区切られたファイルを入力で読み取り、ファイルを引数として追加してrmコマンドを起動します。


1
また、のrm --代わりにを使用することをお勧めしrmます。これにより、ダッシュで始まる可能性のあるファイル名がrmパラメータとして扱われなくなります。
artyom 2013

相性がよくなかった........ tr:追加のオペランドmonu.txt' Try tr --help '詳細については。rm:オペランドがありません詳細については、「rm --help」を試してください。........これは私が見ることができるすべてのワットです
monu

1
ファイル名の前の<をお見逃しましたか?
ジョナスベルリン

@argyomの提案に従って、xargsコマンドも少し改善しました-削除するファイルがない場合にrmが実行されないように-rを追加しました。
ジョナスベルリン

5

上記の答えは、スペースと「奇妙な文字」を含むファイル名を処理するために非常に長くなるという点で問題ありません。しかし、最も簡単な方法は、ファイル名が正気である場合、(警告、バシズム!)

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

通常のシェルの場合:

rm `cat /the/file/with/names`
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.