Создайте Zip для каждой подпапки, но содержащий только подобранные файлы

tsocks приложение может socksify любые приложения

tsocks app args
3
29.10.2013, 22:02
2 ответа

Если вся странность в Ваших именах каталогов - то, что у них есть пробелы, это должно сделать:

shopt -s nullglob
for dir in */;do
    dir="${dir%/}"
    zip "$dir".zip "$dir"/*.{shp,shx,qpj,prj,dbf}
done
2
27.01.2020, 21:23
  • 1
    ЕСЛИ я выполняю это от Терминала, он не работает, похоже, что он разделяет находку, когда пространство найдено. Например, одну папку называют "Седлом". Я получаю ошибку при высказывании "ошибки zip: Ничто, чтобы сделать! (./The.zip)" и другая "ошибка zip: Ничто, чтобы сделать! (Saddle.zip)" существует другие ошибки промежуточное высказывание "zip, предупреждающая: имя, не подобранное: Седло / *.sh" и повторенный для каждого расширения файла. Ответ –  Steven 29.10.2013, 21:47
  • 2
    @Steven обновляется. Это сохранит пробелы, но не сделает рекурсии. Это будет работать над каталогами на текущем уровне только. –  Joseph R. 29.10.2013, 21:54
  • 3
    Это - почти это, кроме zip-файла, который это создало в каждой папке, которая на самом деле лучше для моих целей, но это избежало добавлять название каждой zip. Имя файла для каждой zip установлено на ".zip", это не поместило имя папки прежде ".zip", это создало 2 папки в самом zip-файле. Надежда, которая имеет смысл. –  Steven 29.10.2013, 22:22
  • 4
    @Steven Мое плохое. Должен работать теперь... –  Joseph R. 29.10.2013, 22:24
  • 5
    , которое работает. Я добавил: 'mv "$dir" .zip "$dir"' непосредственно перед сделанной командой для перемещения zip-файла в папку файлы были заархивированы от. –  Steven 29.10.2013, 22:46

Ну, не уверенный, если с одним лайнером возможно, вероятно, да. Но я сделал то, в чем Вы нуждаетесь вместо этого с этим:

OIFS=$IFS
IFS='\n'
find . -type d -maxdepth 1 | while read -r i; do
    find $i -name "*.shp" -o -name "*.shx" -o -name "*.shx" -o -name "*.prj" -o -name "*.qpj" |zip -@ "$i".zip
done
IFS=$OIFS

Каждый zip-файл будет Вашим именем dir.

1
27.01.2020, 21:23
  • 1
    я забыл упоминать, что некоторые мои имена папок имеют пробелы. Это архивирует только папки без пробелов на имя. Я почти, там благодарит. –  Steven 28.10.2013, 23:30
  • 2
    Обновленный вопрос. Это должно работать, но если каталог не будет иметь никакого соответствия для filesnames, то это бросит ошибку / информация, не указывая "ничего, чтобы сделать", таким образом, никакой zip-файл не будет создан так или иначе. –  BitsOfNix 29.10.2013, 01:06
  • 3
    Это - вероятно, глупый вопрос, но если я выполняю это как сценарий. Например, сохраните его как .sh файл и выполните его с "ударом filename.sh", я получаю ошибку, если я делаю это. Если я просто выполняю его от Терминала, это не работает правильно из-за того, чтобы быть разделенным через строки. –  Steven 29.10.2013, 21:39
  • 4
    Для давания лучшее представление о структуре папок и именах файлов вот, снимок экрана примера папок слева и содержания одной из папок справа. Можно также видеть zip-файлы вышеупомянутая созданная команда. Это пропустило несколько папок.! снимок экрана –  Steven 29.10.2013, 22:02

Теги

Похожие вопросы