1

У меня есть каталог /dir , и он полон других каталогов без единой схемы именования. Так /dir/EqcWTG /dir/SomeDirectoryName /dir/3435346 и так далее.

Я хотел бы превратить каждый из этих каталогов в ZIP-файл. Поэтому я хочу запустить $ zip -r directoryname.zip directoryname для каждого каталога в $(pwd) .

Что было бы самым простым способом сделать это?

1 ответ1

3

Использование find должно работать:

find /dir -not -name "dir" -maxdepth 1 -type d -exec zip -r '{}.zip' '{}' \;

Обратите внимание, что у меня есть /dir в качестве основного пути find но также есть -not -name "dir" чтобы родительский каталог не архивировался. Затем мы ограничиваем глубину сканирования find с помощью -maxdepth 1 что означает, что find будет искать только непосредственных потомков пути /dir . После этого мы будем работать только с каталогами с -type d . И, наконец, мы используем -exec для запуска команды magical zip , которая рекурсивно сжимает все найденные каталоги; {} просто соответствует самому имени каталога.

Другим тактом будет использование -mindepth 1 вместо -not -name "dir" на тот случай, если вложенная директория в структуре parent /dir так или иначе будет называться /dir или иметь в качестве части своего имени dir. :

find /dir -mindepth 1 -maxdepth 1 -type d -execdir echo {} \;

Теперь они будут создавать ZIP-архивы, которые будут расширяться до полного пути /dir ; /dir/EqcWTG /dir/SomeDirectoryName /dir/3435346 и т.д ... Если вы хотите автономные / относительные ZIP архивов можно использовать -execdir вместо -exec , как это:

find /dir -not -name "dir" -maxdepth 1 -type d -execdir zip -r '{}.zip' '{}' \;

Та же идея -execdir , но с -mindepth 1 вместо -not -name "dir":

find /dir -mindepth 1  -maxdepth 1 -type d -execdir zip -r '{}.zip' '{}' \;

Так как -execdir заставляет команду find действовать в фактическом каталоге, в котором она обнаружила что-то, а не полный путь, эта команда создаст ZIP-архивы с аналогичными именами, которые будут расширяться до относительных каталогов с именами EqcWTG , SomeDirectoryName , 3435346 и т.д. Окончательное использование / опции, которые вы выбираете, зависят от ваших конечных потребностей в архивировании ZIP.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .