розпакуйте, як обрізати головні каталоги


14

У мене є поштовий архів. unzip -l myarchive.zipКоманда дає цей список:

top/subtop/files/1.txt
top/subtop/files2/2.txt
etc

Кореневі папки - це верх / підтекст для всіх файлів. Як витягнути ці файли без двох верхніх / підтечних папок?

Наприклад, коли я перебуваю в / home / myuser / public_html директорії, files/1.txtі я files2/2.txtповинен бути вилучений безпосередньо до цього каталогу.

Я спробував, unzip myarchive.zip top/subtop/*але це все одно створило каталоги top / subtop.

Відповіді:


9

На жаль, ви не можете. Ваш єдиний реальний варіант - просто перемістити їх після їх вилучення.


Хм, добре знати. Я запитав це тому, що кілька днів тому, створюючи архів, він додав кілька шляхів зверху, ненавмисно. Тому виникла проблема з їх розпакуванням через додаткові верхні шляхи. Однак я не можу повторити це сьогодні - сьогодні він працює нормально, тобто коли в каталозі top / subtop і виконуються zip -r files.zip *, він не додає шлях top / subtop як префікс до файлу шляху. Я думаю, що я виконую точно таку ж команду, але як не дивно, результати відрізняються, тому не потрібно знімати топ-каталоги під час розпакування.
camcam

Зауважте, що можна ігнорувати всі каталоги (просто розміщуючи всі файли поруч) unzip -j.
Skylar

4

Можливо, ви захочете спробувати tarкоманду, яка має --strip-componentsфункцію та може працювати з поштовими файлами.


2
Не працює з дьогтем (GNU tar) 1.15.1:tar: This does not look like a tar archive tar: Error exit delayed from previous errors
Кевін Панько

2
Дьоготь FreeBSD може обробляти ZIP-архіви. На жаль, інші тар-реалізації не настільки повнофункціональні.
Михайло Т.

1
Для користувачів Debian, тар FreeBSD доступний у вигляді bsdtar (apt-get install bsdtar), якщо ви хочете використовувати tar для отримання zip-файлів.
Ніклас Б

0

Я використовував цю команду, щоб скопіювати всі файли до мого каталогу кореневих файлів після вилучення всіх заархівованих файлів, він працював чудово. Величезна економія часу:

for /r %f in (00P*) do @copy "%f" 

( http://mlichtenberg.wordpress.com/2011/01/25/command-line-fun-how-to-flatten-a-folder-hierarchy/ )


5
Ви розумієте, що це команда DOS і не має нічого спільного з командним рядком Linux, правда?
MestreLion

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