我想使用 exiftool 為 jpg 檔案提供序列號。檔案包含在主目錄的子目錄中,我可以用什么替換 FOLDER_OF_CURRENT_FILE 來實作這一點?
找 。-type f -name "*.jpg" -exec exiftool -SerialNumber=FOLDER_OF_CURRENT_FILE;
uj5u.com熱心網友回復:
隨著發現:
find . -mindepth 2 -type f \( -iname '*.jpg' -o -iname '*.jpeg' \) \
-exec sh -c '
for path do
dir=${path%/*}
dir=${dir##*/}
echo exiftool -overwrite_original -SerialNumber="${dir}" "$path"
done' _ {}
這是一個試運行。您可以運行它,并查看要執行的命令列。如果看起來沒問題,請洗掉echo以運行。
-mindepth 2必須指定,除非你想要-SerialNumber=.-iname意味著忽略大小寫
或者,可以完全使用 exiftool 來完成此操作:
exiftool -r -overwrite_original '-SerialNumber<${directory; s=.*/==s;}' .
-r用于遞回- Exiftool 允許指定屬性,并使用它們注入任意 perl 代碼。因此,可以使用 perl 替換來洗掉直到最后一個目錄的所有內容。我使用
s修飾符(second s)來覆寫可能包含新行的路徑。 - 還有
${directory;my @a=split m(/); $_ = $a[-1]}它產生相同的結果(通過斜線分割路徑到一個陣列,并使用最后一個元素) - 這會修改所有支持的檔案格式。要僅指定 jpg 檔案,請替換
.為-ext jpg -ext jpeg . - 顯然,
-overwrite_original是可選的,但遞回運行可能會創建許多重復的影像,否則
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/359465.html
