Lista plików jest podawana jako dane wejściowe dla trpolecenia, które zmienia separator plików z podawania liniowego na bajt zerowy, a xargspolecenie odczytuje pliki oddzielone bajtami zerowymi na wejściu i uruchamia polecenie rm z plikami dołączonymi jako argumenty.
Sugeruję również użycie rm --zamiast po prostu rm, aby nazwy plików, które mogą zaczynać się od myślnika, nie były traktowane jako rmparametry.
artyom
To nie zadziałało, kolego ... tr: extra operand 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ć
pon.
1
Czy może przegapiłeś <przed nazwą pliku?
Jonas Berlin
Ulepszyłem też trochę komendę xargs - dodałem - zgodnie z sugestią @artyoma i dodałem -r, aby upewnić się, że nie uruchomi się polecenia rm, jeśli nie ma żadnych plików do usunięcia.
Jonas Berlin
5
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!):
Odpowiedzi:
Jeśli masz jeden plik w linii, jednym ze sposobów jest:
Lista plików jest podawana jako dane wejściowe dla
tr
polecenia, które zmienia separator plików z podawania liniowego na bajt zerowy, axargs
polecenie odczytuje pliki oddzielone bajtami zerowymi na wejściu i uruchamia polecenie rm z plikami dołączonymi jako argumenty.źródło
rm --
zamiast po prosturm
, aby nazwy plików, które mogą zaczynać się od myślnika, nie były traktowane jakorm
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!):
Dla zwykłej powłoki:
źródło