2012-09-08 125 views
-1

我有幾個文件夾的照片,每個平均15000張照片,現在我想要一個腳本來重命名文件。 可能會將文件名稱 obraz2.jpg.1更改爲obraz2.jpg.1500,現在chcaiłbym將每個文件名更改爲創建日期,例如:010912-04-00-34.jpg file from 1 2012年9月小時4分0秒34,有一個bash腳本批量重命名文件(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應該改變什麼才能像我想要的那樣,我會添加腳本,我發現自己沒有寫。

+0

所以,你要重命名的質量已經與所需的日期格式重命名的文件?林不知道我明白你的問題。什麼是chcailbym?請重新提出您的問題細節,這很難理解。 –

+0

什麼是「chciałbym」谷歌翻譯「我」對不起我的語言是波蘭語 – user1654327

+0

如果你的問題是與日期格式,請看看這個問題:[http://stackoverflow.com/questions/4181552/unix-stat-time -format](http://stackoverflow.com/questions/4181552/unix-stat-time-format) –

回答

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