Linuxシステムには、アンインストールが必要と判断された複数のファイルを一覧表示するテキストファイルがあります。これらのファイルのいくつかはWindowsで作成され、「1.」または「2.」(つまり、ピリオドの後にテキストスペースがある)などが含まれます.
rm
rm -f
引用符でfilenameコマンドを入力すると、コマンドはそれを削除します。ただし、このコマンドを70万回入力すると発生しません。コマンドに「リスト」ファイルを入力しようとしましたが、名前が不規則なファイルはスキップされます。
とにかく、削除コマンドをスクリプトに入れて自動化された方法で実行できますか?
ベストアンサー1
私の考えでは、あなたがよく聞く理由の1つに直面していると思います。出力を解析しません。ls
。
つまり、list.txt
削除したいファイル名(1行に1つ)を含めてLinuxスタイルの行末を使用している場合は、次のようにも機能します。
while IFS= read filename
do
rm "$filename"
done < list.txt
これを最初にテストすることをお勧めします(たとえば、ダミーファイルの生成を使用してtouch "1. this is a first test.txt"
から、そのファイル名を含むダミーファイルのtouch "2. my second_file.bla"
生成list.txt
)。
上記のコードをbash
スクリプトに含めるか、次のようにコマンドラインに直接入力できます。
user@host$ while IFS= read filename; do rm "$filename"; done < list.txt