Перебирая алфавиты в Bash - PullRequest
       25

Перебирая алфавиты в Bash

73 голосов
/ 04 сентября 2011

Я хочу mv все файлы, начинающиеся с 'x', в каталог 'x'; что-то вроде:

mv path1/x*.ext path2/x

и сделайте это для всех букв алфавита a, ..., z

Как мне написать скрипт bash, который делает «x» в алфавите?

Ответы [ 5 ]

120 голосов
/ 04 сентября 2011
for x in {a..z}
do
    echo "$x"
    mkdir -p path2/${x}
    mv path1/${x}*.ext path2/${x}
done
35 голосов
/ 04 сентября 2011

Это должно помочь вам начать:

for letter in {a..z} ; do
  echo $letter
done
17 голосов
/ 04 февраля 2015

Здесь описано, как создать испанский алфавит с использованием вложенной фигурной скобки

for l in {{a..n},ñ,{o..z}}; do echo $l ; done | nl
1  a
 ...
14  n
15  ñ
16  o
...
27  z

Или просто

echo -e {{a..n},ñ,{o..z}}"\n" | nl

Если вы хотите сгенерировать устаревшие 29 символов испанскогоалфавит

echo -e {{a..c},ch,{d..l},ll,{m,n},ñ,{o..z}}"\n" | nl

То же самое можно сделать для французского алфавита или немецкого алфавита.

3 голосов
/ 20 марта 2015

Использование rename:

mkdir -p path2/{a..z}
rename 's|path1/([a-z])(.*)|path2/$1/$1$2' path1/{a..z}*

Если вы хотите удалить начальный символ [az] из имени файла, обновленный perlexpr будет:

rename 's|path1/([a-z])(.*)|path2/$1/$2' path1/{a..z}*
1 голос
/ 16 сентября 2018

С прописными буквами

for letter in {{a..z},{A..Z}}; do
  echo $letter
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...