-1

写真を含むいくつかのフォルダーがあり、それぞれ平均 15,000 枚の写真があり、ファイルの名前を変更するスクリプトを実行したいと考えています。ファイルの名前が obraz2.jpg.1 から obraz2.jpg.1500 に変更され、各ファイル名の chcaiłbym が作成された日付に変更されました。時 4 分 0 秒 34、bash スクリプトあり

#!/bin/bash
# Copy jpg files in a directory to a new name based solely on creation date
# FROM: obraz2.jpg.1 > 1500  Created on: 2012-04-18 18:51:44
# TO:    20120418_185144.jpg
for i in *.*
do
#  mod_date=$(stat -c "%y" "$i"|sed 's/\..*$//')
#  mod_date=$(stat -c "%y" "$i"|awk '{print $1"_"$2}'|sed 's/\..*$//')
mod_date=$(stat --format %y "$i"|awk '{print $1"_"$2}'|cut -f1 -d'.'|sed 's/[: -]//g')
 cp "$i" "$mod_date".jpg
done

彼が付けた 010912-04-00-34.jpg という名前に問題があります。これは 20120418_185144.jpg を実行するスクリプトではありません。私が望むように変更する必要があります。スクリプトを追加します。私は自分自身が書かれていないことに気づきました。

4

1 に答える 1

0

日付文字列を再フォーマットするにはdate、次のようにプログラムを使用できます。

for i in *.*; do
     stat_date=$(stat --format %y "$i"|awk '{print $1"_"$2}' | cut -f1 -d'.'|sed 's/_/ /g')
     date_fmt=$(date --date="$stat_date" +"%d%m%y-%H-%M-%S")
     cp $i ${date_fmt}.jpg
done
于 2012-10-05T14:12:53.417 に答える