Ho appena decompresso un archivio che ha prodotto un disordine di file nella mia directory ordinata. Per esempio:
user@comp:~/tidy$ tar xvf myarchive.tar
file1
file2
dir1/
dir1/file1
dir1/subdir1/
dir1/subdir1/file1
dir2/
dir2/file1
...
Mi aspettavo che il file tar sarebbe stato organizzato in una singola cartella (cioè, myarchive/
), ma non lo era! Ora ho circa 190 file e directory che sono stati archiviati digitalmente in quella che era una directory organizzata. Questi file non ancora caricati devono essere ripuliti.
C'è un modo per "annullare" questo ed eliminare i file e le directory che sono stati estratti da questo archivio?
Grazie per le eccellenti risposte di seguito. In sintesi , ecco cosa funziona con due passaggi (1) elimina i file e (2) elimina la struttura di directory vuota in ordine inverso di imballaggio (per eliminare prima le directory esterne):
tar tf myarchive.tar | xargs -d'\n' rm
tar tf myarchive.tar | tac | xargs -d'\n' rmdir
E ancora più sicuro, visualizzare in anteprima una serie di comandi a secco aggiungendo echo
dopo xargs
.
xargs
( tac
invece che sort -r
solo con i cosmetici), ma accetti la risposta con la sostituzione del processo che, come spiegato nei commenti, non ti andava bene? Inoltre, si prega di dare il xargs -d'\n'
passaggio nel tuo post se si desidera riepilogare per gli utenti futuri, in modo che non vengano morsi da spazi nei nomi dei file.
-d'\n'
fino ad ora, e dopo ulteriori analisi la tua risposta è in realtà più vicina a quella che ho usato.
-d'\n'
risiede nel fatto che se non dici xargs
di dividere argomenti su nuove righe (che è ciò che stai alimentando) ma su spazi, quindi un file con il il nome folder1/some file
verrà letto come folder1/some
e name
.