Як "скасувати" розпакування команди?


19

Я використовував "разархівувати XXX.zip" для отримання zip-файлу, на жаль, я помиляюся.

Тепер я хочу видалити всі файли та режими, створені "unzip".
Як я можу скасувати це?

Відповіді:


29

використовуй це:

unzip -l filename |  awk 'BEGIN { OFS="" ; ORS="" } ; { for ( i=4; i<NF; i++ ) print $i " "; print $NF "\n" }' | xargs -I{} rm -v {}

Використовуйте це, якщо ви ставитесь до скептично (підкажете підтвердження)

unzip -l filename |  awk 'BEGIN { OFS="" ; ORS="" } ; { for ( i=4; i<NF; i++ ) print $i " "; print $NF "\n" }' | xargs -I{} rm -iv {} 

Помилка, якщо в будь-яких файлах є пробіли у своїх іменах ... (+1 зараз із -iредагуванням. :)
sarnold

Проблема полягає в тому, що awk '{print $4}'- ім'я файлу з пробілами може бути в $4 $5 $6 .... :)
sarnold

1
Добре. Виправлено це теж.
Abhijeet Rastogi

5
FTR також видаляє оригінальний zip-файл
sjr

Мій шлях:unzip -l foo.zip | awk 'NR>3{print $NF}' | egrep -v '\--|files'|xargs rm -r
zhuguowei

5

Ти в грубій точці; стандартна zipinfo(1)утиліта не забезпечує жодного механізму для отримання однозначних імен файлів з архіву. Але , ви можете підійти близько:

zipinfo -1 /path/to/zip/file.zip | xargs -d '\n' rm -i

Якщо ви впевнені, що в жодному з файлів немає нових рядків, ви можете видалити -iпараметр до rm(1)(що, безумовно, набридне).


4
unzip -Z -1 <filename.zip> | xargs -I{} rm -v {}

Робить це завдання, тому що -Zпосилається на zipinfoутиліту та -1параметр пропонує їй друкувати лише імена файлів

Ви можете дізнатися більше про це через команди man unzipта man 1 zipinfoкоманди


1

Якщо ви хочете очистити ваш каталог після випадкового розпакування, не створивши спочатку папку, ви можете створити папку, розпакуйте її, а потім:

rm -r ` ls folder `

"" "дуже корисно для ланцюжка команд, але дуже буквально.

Коментарі покращили цю відповідь, якщо ви хочете переконатись, що ви також видаляєте приховані файли (що, ймовірно, робите), зробіть це

rm -r ` ls -A folder `

вибачення за те, що поспішають на неправильний синтаксис, чи можна зняти голосування?
chrispepper1989

1
Якщо zip відмовився перезаписати будь-які файли, оригінали буде видалено. Якщо будь-які приховані файли були розпаковані, вони не будуть видалені (якщо ви не використовуєте ls -a).
gmarmstrong

1
А точніше, ls -Aщоб уникнути помилок у переліку .та..
gmarmstrong

0

Для цього в Nautilus (без командного рядка) ви можете просто перейти до місця випадкового вилучення файлів, сортувати файли, натиснувши на вкладку "Модифіковані", потім вибрати та видалити всі файли, позначені точним часом запустив команду unzip.


1
Будь ласка, прочитайте запитання ще раз уважно. Ваша відповідь не відповідає на початкове запитання. На жаль, Linux не включає Windows Explorer.
DavidPostill

Ага, так! Мені не прийшло в голову, що розпакування не було командою Windows терміналу до цих пір. Спасибі! Я перевірю, чи має Nautilus подібний функціонал, і відредагую відповідь. В іншому випадку я його просто вийму.
cameronroytaylor

-1
unzip -Z -1 /path/to/zip/file.zip | xargs -I{} rm -rf {}

2
Хоча це може відповісти на питання, було б кращою відповіддю, якщо ви могли б дати пояснення, чому це так.
DavidPostill
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.