Mam plik tekstowy z listą ścieżek do różnych plików. Czy mogę użyć polecenia, które będzie iterować po każdej linii i usunie plik pod podaną ścieżką?
command-line
files
daka
źródło
źródło
cat
nie jest wymagana, możesz użyćstdin
przekierowania:< file xargs rm
cat file
” w (ba) sh lub csh.cat
jest bezużyteczny , jak już wspomniano, skorzystaj zstdin
! Spójrz na jego zaktualizowaną odpowiedźOto jeden ze sposobów radzenia sobie z nazwami plików z białymi znakami, odwrotnymi ukośnikami i innymi dziwnymi znakami:
To przeczyta każdy wiersz
list.txt
, zapisz go jako$file
i uruchomrm
na nim. W-r
gwarantuje, że backslashe dosłownie czytać (tak, że\t
dopasowuje\
at
, a nie karta). W--
zapewnia, że zajmuje się również nazwy plików zaczynające się-
.Możesz to również zrobić w Perlu:
Ten wczyta każdą nazwę pliku do
%k
skrótu, a następnie użyjeunlink
do usunięcia każdego z nich.źródło
Poprzez python.
Zapisz powyższy skrypt w pliku o nazwie like,
script.py
a następnie uruchom skrypt, uruchamiając poniższe polecenie na terminalu.file
to plik wejściowy, w którym przechowywana jest ścieżka plików, które chcesz usunąć.źródło
Głupie, ale oto jedno:
źródło
Inny sposób to zrobić:
Możesz „przygotować” plik, tworząc skrypt powłoki:
Jeśli twoje nazwy plików mogą zawierać pojedynczą cudzysłów (
'
), możesz użyć tej nieco rozszerzonej wersji, aby uciec przed nimi:Możesz to uruchomić, przesyłając go do
sh
:źródło
Jak rozumiem, masz plik tekstowy z plikami z pełnymi ścieżkami. Istnieją dwie możliwości:
Twoja lista ma nazwy plików oddzielone znakami nowej linii, tzn. Każda linia ma pełną ścieżkę do pliku. w tym przypadku: oto proste wyjście:
Jeśli lista zawiera jeden lub więcej wierszy nazw plików oddzielonych spacjami lub tabulatorami, oto ćwiczenie:
spowoduje to konwersję wszystkich białych znaków do nowych linii
Tak, istnieje wiele sposobów, aby to zrobić, ale jest to bardzo proste podejście.
źródło