
次のフォルダ構造があります。「Pictures/2015/2015-01-02/random_name.jpg」ファイル名を「2015-01-02 001.jpg」、「2015-01-02 002」に変更したいと思います。 。 jpg 'など
私はbashプログラミングとperl表現に慣れていないので、助けてくれてありがとう。事前にありがとう
答え1
cd target_dir
dcomp="$(basename "$(pwd)")"
count=1
for file in *; do
ext="${file##*.}"
mv -v "$file" "$dcomp $(printf '%03d' "$count").$ext"
(( count++ ))
done
これは実際には結果ファイル名にスペースが必要であると仮定しますが、これは良い考えではありません。もちろん、ループ内のモードを好きなように変更できます。複数のディレクトリに対してこれを行うには、内容全体をその上のループに配置します。
答え2
それはあなたが必要とするすべてです;)
cd Pictures/2015/2015-01-02
c=0 curdir=${PWD##*/} rename -n '
s/.*/sprintf("%s %.03d.jpg", $ENV{curdir}, $ENV{c}++)/e' *jpg
明らかにこれはPerlの名前変更です。
-n
テスト(模擬実行)後にスイッチを取り外します。