2016-08-31 48 views
0

我嘗試在exiftool.exe的幫助下,在我的* .jpg文件中找到像「Odeon」這樣的特定元數據內容,然後從文件中刪除此特定標記。如何查找特定元數據內容並將其從照片中刪除?

我找不到「國賓」用命令

exiftool -if "$keywords =~ /Odeon/" . 

我知道它的存在,在這個例子中,內容存儲在標籤中的「位置」。

可以請別人告訴我了,如何
一)找到的內容,無論它會被存儲在一個* .JPG
內部B)刪除正是這種發現標籤從這個文件(不包含文件的備份)?

回答

1

您的命令不起作用的原因是您只檢查關鍵字標記。位置是一個不同的標籤,你會檢查那裏的信息。

不幸的是,Exiftool不能僅列出具有匹配數據的標籤。您可以通過另一個命令行程序(如Find(因爲您在Windows上)或Grep(其他平臺))管道輸出。在這種情況下,您的命令行如下所示:
exiftool -g1 -a -s FileOrDir | Find "Odeon"
這會列出所有包含您的信息的標記。

後,你發現標籤,然後你可以無需使用此命令備份文件中刪除,與標籤的名稱替換TAG:
exiftool -overwrite_original -TAG= FileOrDir
注意到,這個命令會從刪除該標籤的所有文件,如果你指定一個目錄。如果你想更具選擇性,標籤只包含文本「Odeon」,那麼你可以使用這個命令。請注意,該命令區分大小寫。它不會刪除「oDeON」或其他變體:
exiftool -overwrite_original -TAG-="Odeon" FileOrDir
如果您想要將包含「Odeon」的某個標記作爲較長字符串的一部分刪除並且不區分大小寫,則可以添加-if選項。
exiftool -overwrite_original -if "$TAG=~/odeon/i" -TAG= FileOrDir

最後,還有使用-api "Filter=…"選項的霰彈槍方法。這需要版本10.05或更高版本。此命令:
exiftool -overwrite_original -api "Filter=s/odeon//gi" -tagsfromfile @ -all:all FileOrDir
將從文件中的所有標記中刪除「odeon」(不區分大小寫)。它不會刪除標籤,如果odeon是較長字符串的一部分,則字符串的其餘部分將保留。例如,如果Location等於「Odeon」,它將變成空白字符串。如果描述是「這是Odeon」,它將變成「This is」。 「Filter =」之後的部分是perl正則表達式替換,您可以通過查看正則表達式來進一步優化它。

+0

如果一個標籤包含多個分隔的詞,如「Odeon,London,UK,Europe」,並且我使用了您的最後一種方法,那麼我會得到帶有逗號(或分隔符)的「英國倫敦,歐洲」 。我如何刪除整個Odeon部分,包括分隔符,只留下「倫敦,英國,歐洲」? – PeterCo

+1

這取決於標籤是什麼。這聽起來像標籤可能是一個列表類型的標籤,如關鍵字或主題(這兩個都是用來保存關鍵字的標籤)。如果是這樣的話,它會在標籤中留下一個空白條目,並且使用'api Filter'選項不是您想要使用的。先試試這個命令 'exiftool -overwrite_original -ALL- = Odeon FileOrDir'然後看看它是否適合你。 – StarGeek

相關問題