Właśnie rozpakowałem archiwum, które produkowało bałagan plików w moim uporządkowanym katalogu. Na przykład:
user@comp:~/tidy$ tar xvf myarchive.tar
file1
file2
dir1/
dir1/file1
dir1/subdir1/
dir1/subdir1/file1
dir2/
dir2/file1
...
Spodziewałem się, że plik tar zostałby zorganizowany w jednym folderze (tj. myarchive/
), Ale tak nie było! Teraz mam około 190 plików i katalogów, które zostały cyfrowo zakodowane w tym, co było zorganizowanym katalogiem. Te nieopracowane pliki muszą zostać wyczyszczone.
Czy jest jakiś sposób, aby to „cofnąć” i usunąć pliki i katalogi wyodrębnione z tego archiwum?
Dzięki za doskonałe odpowiedzi poniżej. Podsumowując , oto, co działa w dwóch krokach: (1) usunięcie plików i (2) usunięcie pustej struktury katalogów w odwrotnej kolejności pakowania (aby najpierw usunąć katalog zewnętrzny):
tar tf myarchive.tar | xargs -d'\n' rm
tar tf myarchive.tar | tac | xargs -d'\n' rmdir
Jeszcze bezpieczniej, aby wyświetlić podgląd suchego polecenia, dodając echo
po nim xargs
.
xargs
( tac
zamiast sort -r
to tylko kosmetyki), ale akceptujesz odpowiedź z zastąpieniem procesu, który, jak wyjaśniłeś w komentarzach, nie pasował? xargs -d'\n'
Jeśli chcesz podsumować dla przyszłych użytkowników, podaj przełącznik w swoim poście, aby nie zostali ukąszeni spacjami w nazwach plików.
-d'\n'
do tej pory nigdy nie rozumiałem konieczności , a po dalszej analizie twoja odpowiedź jest bliższa temu, czego użyłem.
-d'\n'
polega na tym, że jeśli nie mówisz xargs
o dzieleniu argumentów na nowe wiersze (które karmisz), ale na spacje, plik z nazwa folder1/some file
zostanie odczytana jako folder1/some
i name
.