シェルに触れたばかりで、複雑なスクリプトは書けません。できるだけ簡単なもので妥協し、望んでいる機能を実現できれば良いです。徐々に学んでいきます!
このスクリプトの機能はおおよそ次のようなものです。まず、特定のディレクトリに移動し、そのディレクトリ内には多くのサブディレクトリがあります。それぞれのサブディレクトリに順番に移動し、サブディレクトリ内のすべての jpg 画像の名前を変更します。フォーマットは 5 桁の数字で、0 で埋めます。インターネットで直接 5 桁の数字を出力する方法が見つからなかったため、7 桁の数字 num を定義するしかありませんでした。
名前の変更が終わったら、先頭の 100 を 0 に変更します(私のサブディレクトリ内のファイル数は数千しかありません)。これはさまざまな応用が可能です。
#!/bin/sh
cd train/
num=1000000
new=0
for dir_name in $(ls) #サブディレクトリを検索
do
l=1
if [ -d $dir_name ]; then
cd $dir_name/ #サブディレクトリに移動
for img in $(ls)
do
let new=num+l
rename "s/$img/$new.jpg/" *
let l=l+1
done;
rename 's/^100/0/' *.jpg
cd ../
fi
done;
もし良い方法があれば、コメントで共有していただけると嬉しいです。ありがとうございます!