一部のファイルには名前に「.」があります。 rmコマンドへの入力として.txtファイルを使用してどのように削除できますか?

一部のファイルには名前に「.」があります。 rmコマンドへの入力として.txtファイルを使用してどのように削除できますか?

Linuxシステムには、アンインストールが必要と判断された複数のファイルを一覧表示するテキストファイルがあります。これらのファイルのいくつかはWindowsで作成され、「1.」または「2.」(つまり、ピリオドの後にテキストスペースがある)などが含まれます.

rmrm -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

おすすめ記事