Распакуйте zip-файлы в каталог на основе шаблона имени zip-архива

извлечение из man (5 абзац):

   1   Executable programs or shell commands
   2   System calls (functions provided by the kernel)
   3   Library calls (functions within program libraries)
   4   Special files (usually found in /dev)
   5   File formats and conventions eg /etc/passwd
   6   Games
   7   Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7)
   8   System administration commands (usually only for root)
   9   Kernel routines [Non standard]
1
20.05.2016, 00:58
2 ответа

С помощью sed вы можете получить первые 30 символов:

sed 's|\(.\{30\}\).*|\1|'

и использовать их вместо cut в цикле for.

Суть этой подстановки sed в том, что то, что совпадает между \( \), вы заменяете на \1. {30} (экранированный \) считает 30 отдельных символов (. ).

1
27.01.2020, 23:48

Спасибо за все предложения, я взял кусочки из всех предложений и создал эту команду. В моем случае это именно та команда, которая мне требовалась.

for f in /mydirectory/*.zip; do
   n=$(echo ${f##*/} | cut -c1-30);
   unzip -d /mydirectory/$n $f;
done
  • Он просматривает все zip-файлы.
  • Отображает каждый zip-файл (только имя файла, не отображается дополнительная информация, такая как размер или путь), а затем показывает только первые 30 символов и сохраняет их в переменной n
  • затем извлекает содержимое в новый каталог (используя переменную n) для каждого zip-файла.

В моем случае я помещаю это в сценарий, который запускается из другого каталога.

0
27.01.2020, 23:48

Теги

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