tar tf archive.tar
listará o conteúdo linha por linha.
Isso pode ser canalizado para xargs
diretamente, mas beware : faça a exclusão com muito cuidado. Você não quer apenas rm -r
de tudo o que tar tf
informa, pois pode incluir diretórios que não estavam vazios antes de serem descompactados!
Você poderia fazer
tar tf archive.tar | xargs -d'\n' rm -v
tar tf archive.tar | sort -r | xargs -d'\n' rmdir -v
primeiro remova todos os arquivos que estavam no arquivo e, em seguida, os diretórios que estão vazios.
sort -r
(glennjackman sugeriu tac
em vez de sort -r
nos comentários para a resposta aceita, que também funciona, pois a saída de tar
é regular o suficiente) é necessária para excluir os diretórios mais profundos primeiro; caso contrário, um caso em que dir1
contenha um único diretório vazio dir2
deixará dir1
após o rmdir
pass, já que ele não estava vazio antes que dir2
fosse removido.
Isso gerará muito
rm: cannot remove 'dir/': Is a directory
e
rmdir: failed to remove 'dir/': Directory not empty
rmdir: failed to remove 'file': Not a directory
Encerre isso com 2>/dev/null
se isso te incomodar, mas prefiro manter o máximo de informações possível sobre o processo.
E não faça isso até ter certeza de que corresponde aos arquivos corretos. E talvez tente rm -i
para confirmar tudo. E faça backups, coma seu café da manhã, escove os dentes, etc.