Odpowiedzi:
Jeśli masz jeden plik w linii, jednym ze sposobów jest:
tr '\n' '\0' < list_of_files_to_be_deleted.txt | xargs -0 -r rm --
Lista plików jest podawana jako dane wejściowe dla tr
polecenia, które zmienia separator plików z podawania liniowego na bajt zerowy, a xargs
polecenie odczytuje pliki oddzielone bajtami zerowymi na wejściu i uruchamia polecenie rm z plikami dołączonymi jako argumenty.
rm --
zamiast po prostu rm
, aby nazwy plików, które mogą zaczynać się od myślnika, nie były traktowane jako rm
parametry.
monu.txt' Try
tr --help 'po więcej informacji. rm: brakujący operand Aby uzyskać więcej informacji, wypróbuj `rm --help '. ........ To wszystko, co mogę zobaczyć
Powyższa odpowiedź jest dobra, ponieważ bardzo się stara, aby obsługiwać nazwy plików ze spacjami i „dziwnymi znakami”. Ale najprostszym sposobem, jeśli nazwy plików są rozsądne, jest po prostu (ostrzeżenie, bashism!):
rm $(< /the/file/with/names)
Dla zwykłej powłoki:
rm `cat /the/file/with/names`