B_in00'den b_in79'a kadar çok fazla dosyam var ve bu dosyaları b_in00 ile klasör 00'a, vb. Bana rehberlik eder misiniz?
B_in00'den b_in79'a kadar çok fazla dosyam var ve bu dosyaları b_in00 ile klasör 00'a, vb. Bana rehberlik eder misiniz?
Yanıtlar:
Bash:
mkdir {0,1,2,3,4,5,6,7}{0,1,2,3,4,5,6,7,8,9} 80
for i in `seq -w 0 80`; do mv b_in${i} $i; done
-w, 1'in 01 olacağı şekilde sola dolgu uygulamak anlamına gelir.
Alternatif:
mkdir {00..80}
for i in {00..80}; do mv b_in$i $i; done
Ya da
for i in {00..80}; do mkdir $i; mv b_$i $i;done
Bunu yapmanın birçok yolu vardır. Şahsen ben bir kabuk betiği kullanırdım.
Kısaca şöyle görünür:
i=0
while [[ $i -le 80 ]]
do number=$(printf %02i $i)
mkdir $number &&
mv b_in$number $number
i=$((i+1))
done
veya tek satırlı sürüm
i=0; while [[ $i -le 80 ]]; do number=$(printf %02i $i); mkdir $number && mv b_in $number; i=$((i+1)); done
Alternatif bir yaklaşım tüm dosyaları almak, baştaki b_in'i soyun ve kalan dizgiyi directoryname olarak kullanmaktır:
for filename in b_in*
do
dirname=${filename#b_in}
mkdir $dirname &&
mv $filename $dirname
done
Yanlış giden ve bu betiği çalıştırmadan önce kontrol ettiğinizi varsaydığım şeyler:
{00..80}kullandığınız her iki komutta da çalışacaktır.