ファイル名をフォルダ名に一括変更

ファイル名をフォルダ名に一括変更

次のフォルダ構造があります。「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テスト(模擬実行)後にスイッチを取り外します。

関連情報