Bash'de alfabeler arasında döngü


84

İstiyorum mv'x' dizinine 'x' ile başlayan tüm dosyalar; gibi bir şey:

mv path1/x*.ext path2/x

ve bunu tüm alfabe harfleri için yapın a, ..., z

Alfabede 'x' döngüleri oluşturan bir bash betiğini nasıl yazabilirim?

Yanıtlar:



39

Bu senin başlamanı sağlamalı:

for letter in {a..z} ; do
  echo $letter
done

21

iç içe küme ayracı genişletmeyi kullanarak İspanyol alfabesini nasıl oluşturacağınız burada

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

Ya da sadece

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

Eski 29 karakter İspanyol alfabesini oluşturmak istiyorsanız

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

Fransız alfabesi veya Alman alfabesi için de aynısı yapılabilir.


3

Kullanarak rename:

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

Baştaki [az] karakterini dosya adından çıkarmak istiyorsanız, güncellenen perlexpr şöyle olacaktır:

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

2

Büyük harfle de

for letter in {{a..z},{A..Z}}; do
  echo $letter
done

1

Bu soru ve cevaplar sorunumda kısmen bana yardımcı oldu.
Ben gerekiyordu aşkın bir büyüteç alfabenin kısmını bash.

Genişletme kesinlikle metinsel olmasına rağmen

Bir çözüm buldum ve daha da basitleştirdim:

START=A
STOP=D
for letter in $(eval echo {$START..$STOP}); do
    echo $letter
done

Hangi sonuç:

A
B
C
D

Çözmem gereken aynı sorunu arayan biri için yararlı olmasını ve burada biteceğini umuyorum

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.