私のデスクトップにModelsというフォルダがあります。そのフォルダ内には、.jpg拡張子を持たないJPEGファイルを含む名前付きフォルダがあります。 JPEGファイル名は任意のハッシュです。 bashスクリプトを使用して、これらのjpegファイルの名前をディレクトリ名に徐々に一括変更し、各ファイルに.jpg拡張子を追加したいと思います。
基本的には
ロールモデル/
Alice/
a5ccB2ff3e
ee420bc4a
2acee54dc
...
Alex/
de33fa24c0
d1eaa48e0a
...
私はそのような人になりたい
ロールモデル/
Alice/
Alice001.jpg
Alice002.jpg
Alice003.jpg
...
Alex/
Alex001.jpg
Alex002.jpg
...
ベストアンサー1
あなたの質問の説明に基づいて、私は仮定します。フォルダ内のファイルの総数は999を超えることはできません。
以下は単純なbashスクリプトです。最上位ディレクトリ(モデルなど)で実行します。
#!/bin/bash
for i in ./*
do
if [ -d "$i" ]
then
j=001
for k in "$i"/*
do
mv "$k" "$i"/"$i""$j".jpg
j=${j#0}
if [ ${j:0:1} -eq 0 ]
then
j=${j#0}
fi
(( j++ ))
j=`printf '%03i' $j`
done
fi
done
まず、ディレクトリであるかどうかに関係なく、Modelsのすべてのファイルを確認しますif [ -d "$i" ]
。次に、そのディレクトリ内のすべてのファイルの名前がmv "$k" "$i"/"$i""$j".jpg
。
j=${j#0}
if [ ${j:0:1} -eq 0 ]
then
j=${j#0}
fi
上記のコードは最初からすべてのゼロを削除するため、次のエラーは発生しません。
((: 008: value too great for base (error token is "008")
printf: 008: invalid octal number
そして
j=`printf '%03i' $j`
j
値を3ビット長にします。