Linux

用於將文件的元數據屬性寫入單獨的文本文件的 Bash 腳本

  • September 26, 2018

我嘗試編寫一個 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 {} +
  1. read line </dev/tty命令正在從終端(即鍵盤)讀取一行。如果您不想這樣做,請刪除該命令。
  2. 除此之外,循環似乎執行良好嗎?(乍一看,這對我來說還不錯。)如果不是,請編輯您的問題以說明會發生什麼。
  3. -name '*.*'表示只查看名稱中包含句點(又名“點” .)的文件。如果您想排除名稱中不包含**.** (like dataand README) 的文件,那麼這是實現此目的的完美方式。但是,如果你想處理所有文件,請不要使用該-name子句—— find 預設會查看所有文件;-type f像, , , 等等這樣的子句都指定了搜尋的限制(即排除)。-name *something*``-mtime *value*

引用自:https://unix.stackexchange.com/questions/470944