Я хочу, чтобы mv
все файлы, начинающиеся с «x», были помещены в каталог «x»; что-то вроде:
mv path1/x*.ext path2/x
и проделаем это для всех букв алфавита a, ..., z
Как я могу написать сценарий bash, который заставляет «x» проходить по алфавиту?
"$x"
достаточно, и это лучший способ выделить его.Это должно помочь вам начать:
for letter in {a..z} ; do echo $letter done
источник
вот как сгенерировать испанский алфавит, используя расширение вложенных скобок
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
То же самое можно сделать для французского или немецкого алфавита.
источник
Использование
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}*
источник
Также в верхнем регистре
for letter in {{a..z},{A..Z}}; do echo $letter done
источник
Этот вопрос и ответы частично помогли мне решить мою проблему.
Мне нужно было навести лупу над частью алфавита в bash.
Хотя расширение строго текстовое
Я нашел решение и сделал его еще проще:
START=A STOP=D for letter in $(eval echo {$START..$STOP}); do echo $letter done
Что приводит к:
Надеюсь, это поможет кому-то, кто ищет ту же проблему, которую я должен был решить, и тоже оказывается здесь.
источник