15

.txtファイル(たとえばlist.txt)にファイルのリストがあります。そのリストのファイルを削除したい。私はこれまでスクリプトを作成したことがありません。私が使用できるシェルスクリプト/コマンドを提供できる人もいますか。私はbashシェルを持っています。

4

7 に答える 7

45
while read -r filename; do
  rm "$filename"
done <list.txt

遅い。

rm $(<list.txt)

引数が多すぎると失敗します。

私はそれがうまくいくはずだと思います:

xargs -a list.txt -d'\n' rm
于 2012-04-14T03:08:13.177 に答える
10

このコマンドを試してください:

rm -f $(<file)
于 2012-04-13T22:45:49.423 に答える
5

ファイル名にスペースが含まれている場合、他の答えはどれも機能しません。各単語を個別のファイル名として扱います。ファイルのリストが にあると仮定するとlist.txt、これは常に機能します。

while read name; do
  rm "$name"
done < list.txt
于 2012-04-13T23:10:29.380 に答える
2

xargsカスタム区切り文字dが使用できないmacOS で高速に実行するには、次のようにします。

<list.txt tr "\n" "\0" | xargs -0 rm
于 2018-03-17T10:34:49.273 に答える
1

以下は機能するはずであり、ループするときに他のことをする余地があります。

編集: これを行わないでください。ここを参照してください: http://porkmail.org/era/unix/award.html

$(cat list.txt) 内のファイルに対して; rm $ファイルを実行します。終わり

于 2012-04-13T22:44:38.233 に答える
1

今日、これに対する解決策を探していたところ、いくつかの回答と私が持っているいくつかのユーティリティ関数から修正された解決策を使用することになりました。

// This is in my .bash_profile

# Find
ffe () { /usr/bin/find . -name '*'"$@" ; } # ffe: Find file whose name ends with a given string

# Delete Gradle Logs
function delete_gradle_logs() {
   (cd ~/.gradle; ffe .out.log | xargs -I@ rm@)
}

于 2021-02-11T13:57:26.967 に答える