Chcę, aby mv
wszystkie pliki zaczynające się od „x” przechodziły do katalogu „x”; coś jak:
mv path1/x*.ext path2/x
i zrób to dla wszystkich liter alfabetu a, ..., z
Jak napisać skrypt basha, który tworzy pętle „x” po alfabecie?
for x in {a..z}
do
echo "$x"
mkdir -p path2/${x}
mv path1/${x}*.ext path2/${x}
done
"$x"
wystarczy i lepszy sposób, aby się wyróżnić.To powinno zacząć:
for letter in {a..z} ; do echo $letter done
źródło
Oto jak wygenerować alfabet hiszpański za pomocą zagnieżdżonego rozwinięcia nawiasów
for l in {{a..n},ñ,{o..z}}; do echo $l ; done | nl 1 a ... 14 n 15 ñ 16 o ... 27 z
Lub po prostu
echo -e {{a..n},ñ,{o..z}}"\n" | nl
Jeśli chcesz wygenerować przestarzałe 29 znaków hiszpańskiego alfabetu
echo -e {{a..c},ch,{d..l},ll,{m,n},ñ,{o..z}}"\n" | nl
Podobnie można by zrobić z alfabetem francuskim lub alfabetem niemieckim.
źródło
Używając
rename
:mkdir -p path2/{a..z} rename 's|path1/([a-z])(.*)|path2/$1/$1$2' path1/{a..z}*
Jeśli chcesz usunąć początkowy znak [az] z nazwy pliku, zaktualizowany perlexpr będzie wyglądał następująco:
rename 's|path1/([a-z])(.*)|path2/$1/$2' path1/{a..z}*
źródło
Wielkimi literami też
for letter in {{a..z},{A..Z}}; do echo $letter done
źródło
To pytanie i odpowiedzi częściowo pomogły mi w rozwiązaniu mojego problemu.
Musiałem przełożyć lupę na część alfabetu w bash.
Chociaż rozszerzenie jest ściśle tekstowe
Znalazłem rozwiązanie: i uprościłem je jeszcze bardziej:
START=A STOP=D for letter in $(eval echo {$START..$STOP}); do echo $letter done
Co skutkuje w:
Mam nadzieję, że jest to pomocne dla kogoś, kto szuka tego samego problemu, który musiałem rozwiązać, i kończy się tutaj
źródło