Shell
id3v2 在命令行遞歸使用?
試圖清理我的 id3 標籤並在命令行上喜歡 id3v2 ——但我一直只使用 *.mp3 萬用字元並想探索是否有一種方法可以遞歸使用它,以便我可以批量處理所有我的 MP3。似乎沒有遞歸使用它的選項。
我很確定你們這些了不起的命令行人員都知道這樣做的好方法,但我仍在學習我的方法……
這是我為暴力破解而使用別名的命令:
id3v2 --remove-frame "COMM" *.mp3 id3v2 --remove-frame "PRIV" *.mp3 id3v2 -s *.mp3
那麼 - 有沒有辦法遞歸地做到這一點,所以我可以在我的音樂文件夾的根目錄中執行它?要點:包括其他音頻文件類型並將上述所有三個命令合併為一個超級命令(我可以使用
;
命令之間的…對嗎?)
您應該能夠在一行中執行此操作,如下所示:
find . -name '*.mp3' -execdir id3v2 --remove-frame "COMM" '{}' \; -execdir id3v2 --remove-frame "PRIV" '{}' \; -execdir id3v2 -s '{}' \;
{} 替換目前文件名匹配。將它們放在引號 (
''
) 中可以保護它們免受外殼的影響。-execdir
執行直到遇到分號,但分號 ( );
需要從 shell 中轉義,因此使用了反斜杠 (\
)。find
這在手冊頁中都有描述:-exec command ; Execute command; true if 0 status is returned. All following arguments to find are taken to be arguments to the command until an argument consisting of `;' is encountered. The string `{}' is replaced by the current file name being processed everywhere it occurs in the arguments to the command, not just in arguments where it is alone, as in some versions of find. -execdir command {} + Like -exec, but the specified command is run from the subdirec‐ tory containing the matched file, which is not normally the directory in which you started find. This a much more secure method for invoking commands...
由於您聽起來對此有些陌生,因此請注意:與復雜的 shell 命令一樣,請謹慎執行它們,並首先在測試目錄中嘗試,以確保您了解將要發生的事情。擁有權利的同時也被賦予了重大的責任!