Acabei de desarmar um arquivo que produziu uma bagunça de arquivos no meu diretório arrumado. Por exemplo:
user@comp:~/tidy$ tar xvf myarchive.tar
file1
file2
dir1/
dir1/file1
dir1/subdir1/
dir1/subdir1/file1
dir2/
dir2/file1
...
Eu estava esperando que o arquivo tar fosse organizado em uma única pasta (ou seja myarchive/
), mas não era! Agora, tenho 190 arquivos e diretórios que vomitaram digitalmente o que era um diretório organizado. Esses arquivos não identificados precisam ser limpos.
Existe alguma maneira de "desfazer" isso e excluir os arquivos e diretórios que foram extraídos deste arquivo?
Obrigado pelas excelentes respostas abaixo. Em resumo , aqui está o que funciona com duas etapas (1) excluir arquivos e (2) excluir a estrutura de diretórios vazia na ordem inversa de compactação (para excluir primeiro os diretórios externos):
tar tf myarchive.tar | xargs -d'\n' rm
tar tf myarchive.tar | tac | xargs -d'\n' rmdir
E ainda mais seguro, para visualizar uma execução a seco dos comandos anexando echo
depois xargs
.
xargs
(em tac
vez de sort -r
apenas cosméticos), mas aceita a resposta com substituição de processo que, como explicado nos comentários, não se encaixava em você? Além disso, indique a xargs -d'\n'
opção em sua postagem se você quiser resumir para futuros usuários, para que eles não sejam mordidos por espaços nos nomes dos arquivos.
-d'\n'
até agora e, após uma análise mais aprofundada, sua resposta está realmente mais próxima do que eu usei.
-d'\n'
reside no fato de que, se você não disser xargs
para dividir argumentos em novas linhas (que é o que você está alimentando), mas em espaços, um arquivo com o O nome folder1/some file
será lido como folder1/some
e name
.