Bunu dene:
for file in file{18..31}.txt
"Dizi ifadesi" olarak bilinir ve Bash'in küme ayracı genişletme özelliğinin bir parçasıdır . Bash 3 ve 4'te çalışır.
Artış özelliği Bash 4 için yenidir. Muhtemelen Bash 3.x'iniz vardır.
Bash 4'te şunları yapabilirsiniz:
$ for i in {1..6..2}; do echo $i; done
1
3
5
Ancak Bash 3'te, aynı sonuçları elde etmek için bunu yapmanız gerekir:
$ for ((i=1; i<=6; i+=2)); do echo $i; done
Aynı form bir arttırılır:
$ for ((i=1; i<=6; i++)); do echo $i; done
Sayılardan herhangi biri değişken veya ifade olabilir. Ancak, bir sıra ifadesinde sayıların sabit olması gerekir
Dosyalarınızda bu formu kullanan bir örnek:
for ((i=18; i<=31; i++))
do
echo "file${i}.txt"
done
Bash 4'teki dizi ifadelerinin bir başka yeni özelliği, baştaki sıfırları dahil etme yeteneğidir. Düzgün sıralanabilen numaralandırılmış dosyalar oluşturmak (ve kullanmak) istiyorsanız bu yararlıdır.
Bash 4'te:
touch file{001..010}.txt
"file010.txt" aracılığıyla "file001.txt" adlı dosyalar oluşturur. İsimleri beklenen sıraya göre sıralanır. Baştaki sıfırlar olmadan, "file10.txt", "file1.txt" den önce sıralanır.
Dosyalarla çalışmak için aynı baştaki sıfır sözdizimini kullanabilirsiniz:
for file in file{001..010}.txt; do echo "$file"; done
Bash 3'te, önde gelen sıfırlara ihtiyacınız varsa, değeri kendiniz doldurmanız gerekir:
for i in {1..10}
do
printf -v i '%03d' $i
echo "file${i}.txt"
done
printf
Genişliği 3 yani ifadesi sıfır dolgulu i değerini prepend olacaktır (örneğin "4", "004" olur).
Düzenle:
Dosya adlarında boşluk barındırmak kolaydır:
$ touch "space name "{008..018..3}" more spaces"
$ ls -l sp*
-rw-r--r-- 1 user group 0 2011-01-22 11:48 space name 000008 more spaces
-rw-r--r-- 1 user group 0 2011-01-22 11:48 space name 000011 more spaces
-rw-r--r-- 1 user group 0 2011-01-22 11:48 space name 000014 more spaces
-rw-r--r-- 1 user group 0 2011-01-22 11:48 space name 000017 more spaces
$ for f in "space name "{008..018..3}" more spaces"; do mv "$f" "${f}.txt"; done
$ ls -l sp*
-rw-r--r-- 1 user group 0 2011-01-22 11:48 space name 000008 more spaces.txt
-rw-r--r-- 1 user group 0 2011-01-22 11:48 space name 000011 more spaces.txt
-rw-r--r-- 1 user group 0 2011-01-22 11:48 space name 000014 more spaces.txt
-rw-r--r-- 1 user group 0 2011-01-22 11:48 space name 000017 more spaces.txt
for
xargs kullanarak dosya adlarındaki boşluklara izin veren bir döngü kullanarak bir çözüm içerecek şekilde güncelledim . Eğer bash 4 yoksa çalışıyor gibi görünüyor. Eğer bash 4 varsa, o zaman kesinlikle küme ayracı genişletme kullanın! Seçilen cevaba bakınız. Kar Leoparı bash yükseltmek için