Bagaimana cara menjalankan perintah pada daftar nama file dalam file?


11

Saya telah mendaftarkan nama-nama file yang akan dihapus ke dalam file. Bagaimana saya bisa meneruskan file ke rmperintah sehingga harus menghapusnya satu per satu.


Jawaban:


11

Jika Anda memiliki satu file per baris, satu cara untuk melakukannya adalah:

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

Daftar file diberikan sebagai input ke trperintah yang mengubah pemisah file dari linefeed ke byte nol dan xargsperintah membaca file yang dipisahkan oleh null byte pada input dan meluncurkan perintah rm dengan file yang ditambahkan sebagai argumen.


1
Saya juga menyarankan menggunakan rm --bukan hanya rm, sehingga nama file yang dapat dimulai dengan tanda hubung tidak akan diperlakukan sebagai rmparameter.
artyom

Tidak berhasil sobat ........ tr: operan ekstra monu.txt' Try tr --help 'untuk informasi lebih lanjut. rm: operan yang hilang Coba `rm --help 'untuk informasi lebih lanjut. ........ Ini semua yang bisa saya lihat
monu

1
Apakah Anda mungkin melewatkan <sebelum nama file?
Jonas Berlin

Saya sedikit memperbaiki perintah xargs - ditambahkan - sesuai dengan saran @artyom dan menambahkan -r untuk memastikan tidak menjalankan rm jika tidak ada file yang harus dihapus.
Jonas Berlin

5

Jawaban di atas baik-baik saja karena ia berusaha keras untuk menangani nama file dengan spasi dan "karakter aneh". Tetapi cara paling sederhana, jika nama file waras, adalah adil (peringatan, bashism!):

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

Untuk shell biasa:

rm `cat /the/file/with/names`
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.