Я просто распаковал архив, который создал беспорядок в моем аккуратном каталоге. Например:
user@comp:~/tidy$ tar xvf myarchive.tar
file1
file2
dir1/
dir1/file1
dir1/subdir1/
dir1/subdir1/file1
dir2/
dir2/file1
...
Я ожидал, что файл tar будет организован в одной папке (т.е. myarchive/
), но это не так! Теперь у меня есть около 190 файлов и каталогов, которые в цифровом виде оказались в том, что было организованным каталогом. Эти неиспользуемые файлы должны быть очищены.
Есть ли способ «отменить» это и удалить файлы и каталоги, которые были извлечены из этого архива?
Спасибо за отличные ответы ниже. Таким образом , вот что работает с двумя шагами (1) удаление файлов и (2) удаление пустой структуры каталогов в обратном порядке упаковки (чтобы сначала удалить внешние каталоги):
tar tf myarchive.tar | xargs -d'\n' rm
tar tf myarchive.tar | tac | xargs -d'\n' rmdir
И еще безопаснее - предварительно просмотреть пробные команды, добавив их echo
после xargs
.
xargs
( tac
а sort -r
не просто косметику), но вы принимаете ответ с заменой процесса, который, как вы объяснили в комментариях, вам не подходит? Кроме того, укажите xargs -d'\n'
в своем сообщении, если вы хотите подвести итоги для будущих пользователей, чтобы они не были укушены пробелами в именах файлов.
-d'\n'
до сих пор, и после дальнейшего анализа ваш ответ на самом деле ближе к тому, что я использовал.
-d'\n'
заключается в том факте, что если вы не скажете xargs
разделять аргументы по новым строкам (что вы и вводите), а по пробелам, то файл с имя folder1/some file
будет читаться как folder1/some
и name
.