簡體   English   中英

linux-shell:將文件重命名為創建時間

[英]linux-shell: renaming files to creation time

大家早上好,

對於一個網站,我想將文件夾中的文件(圖片)從“1.jpg,2.jpg,3.jpg ...”重命名為“yyyymmdd_hhmmss.jpg” - 所以我想讀出創作times 一組 times 作為圖片的名稱。 有人知道如何使用 linux-shell 或 imagemagick 做到這一點嗎?

謝謝!

基於文件系統日期命名

在 Linux 外殼中:

for f in *.jpg
do
    mv -n "$f" "$(date -r "$f" +"%Y%m%d_%H%M%S").jpg"
done

說明

  • for f in *.jpg do

    這將啟動所有 jpeg 文件的循環。 這樣做的一個特點是它可以處理所有文件名,甚至是名稱中帶有空格、制表符或其他困難字符的文件名。

  • mv -n "$f" "$(date -r "$f" +"%Y%m%d_%H%M%S").jpg"

    這將重命名文件。 它使用-r選項告訴date顯示文件的日期而不是當前日期。 規范+"%Y%m%d_%H%M%S"告訴date按照您指定的格式對其進行格式化。

    文件名$f放在使用雙引號的地方。 這可以確保奇怪的文件名不會導致錯誤。

    mv-n選項告訴 move 永遠不要覆蓋現有文件。

  • done

    這樣就完成了循環。

對於交互式使用,您可能更喜歡將命令全部放在一行上。 在這種情況下,請使用:

for f in *.jpg; do mv -n "$f" "$(date -r "$f" +"%Y%m%d_%H%M%S").jpg"; done

基於 EXIF 創建日期的命名

要根據 EXIF 創建日期(而不是文件系統日期) exiftool文件,我們需要exiftool或等效項:

for f in *.jpg
do
    mv -n "$f" "$(exiftool -d "%Y%m%d_%H%M%S" -CreateDate "$f" | awk '{print $4".jpg"}')"
done

說明

以上與文件日期的命令非常相似,但使用exiftoolawk來提取EXIF圖像創建日期。

  • exiftool命令以如下格式提供日期:

     $ exiftool -d "%Y%m%d_%H%M%S" -CreateDate sample.jpg Create Date : 20121027_181338

    我們想要的實際日期是輸出中的第四個字段。

  • 我們將exiftool輸出傳遞給awk以便它可以提取我們想要的字段:

     awk '{print $4".jpg"}'

    這將選擇日期字段並添加.jpg擴展名。

感謝@John1024!

我需要根據上次修改日期同時重命名具有不同擴展名的文件:

for f in *; do
  fn=$(basename "$f")
  mv "$fn" "$(date -r "$f" +"%Y-%m-%d_%H-%M-%S")_$fn"
done

"DSC_0189.JPG" ➜ "2016-02-21_18-22-15_DSC_0189.JPG"

"MOV_0131.avi" ➜ "2016-01-01_20-30-31_MOV_0131.avi"

如果您不想保留原始文件名:

mv "$fn" "$(date -r "$pathAndFileName" +"%Y-%m-%d_%H-%M-%S")"

希望它對我這樣的菜鳥有所幫助!

嘗試這個

for file in `ls -1 *.jpg`; do name=`stat -c %y $file | awk -F"." '{ print $1 }' | sed -e "s/\-//g" -e "s/\://g" -e "s/[ ]/_/g"`.jpg; mv $file $name; done

雖然可能有更簡單的方法。

我創建了一個 shell 腳本; 我認為它只是mac,linux可能需要其他參數。

#!/bin/bash

BASEDIR=$1;
for file in `ls -1 $BASEDIR`; do 
    TIMESTAMP=`stat -f "%B" $BASEDIR/$file`;
    DATENAME=`date -r $TIMESTAMP +'%Y%m%d-%H%M%S'`-$file
    mv -v $BASEDIR/$file $BASEDIR/$DATENAME;
done

根據文件創建時間更改文件名:

exiftool "-filename<FileCreateDate" -d %Y%m%d_%H%M%S%z%%-c.%%le input.jpg

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM