извлечение из 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]
С помощью sed
вы можете получить первые 30 символов:
sed 's|\(.\{30\}\).*|\1|'
и использовать их вместо cut
в цикле for
.
Суть этой подстановки sed
в том, что то, что совпадает между \( \)
, вы заменяете на \1
. {30}
(экранированный \
) считает 30 отдельных символов (.
).
Спасибо за все предложения, я взял кусочки из всех предложений и создал эту команду. В моем случае это именно та команда, которая мне требовалась.
for f in /mydirectory/*.zip; do
n=$(echo ${f##*/} | cut -c1-30);
unzip -d /mydirectory/$n $f;
done
В моем случае я помещаю это в сценарий, который запускается из другого каталога.