Linux
用於將文件的元數據屬性寫入單獨的文本文件的 Bash 腳本
我嘗試編寫一個 bash 腳本,該腳本循環遍歷給定目錄及其所有子目錄,並使用
mdls
命令將元數據屬性提取到單獨的文本文件中。由於我有很多包含空格和其他特殊字元的文件名,因此我的程式碼庫源自答案“循環遍歷名稱中包含空格的文件? ”。但是在每個文件之後,腳本等待手動按下Enter
/ 。Return
如何讓它自動循環遍歷文件和文件夾?
#!/bin/bash # write metadata of files in separate file find . -type f -name '*.*' -exec sh -c ' for file do echo "$file" mdls "$file" > "$file"_metadata.txt read line </dev/tty done ' sh {} +
- 該
read line </dev/tty
命令正在從終端(即鍵盤)讀取一行。如果您不想這樣做,請刪除該命令。- 除此之外,循環似乎執行良好嗎?(乍一看,這對我來說還不錯。)如果不是,請編輯您的問題以說明會發生什麼。
-name '*.*'
表示只查看名稱中包含句點(又名“點”.
)的文件。如果您想排除名稱中不包含**.
** (likedata
andREADME
) 的文件,那麼這是實現此目的的完美方式。但是,如果你想處理所有文件,請不要使用該-name
子句—— find 預設會查看所有文件;-type f
像, , , 等等這樣的子句都指定了搜尋的限制(即排除)。-name *something*``-mtime *value*