Bash
如何查找具有部分指定路徑的文件?
我正在嘗試在我的備份(Apple 的時間機器)中找到我的所有文件
.txt
。.csv
備份目錄的結構是這樣的:
/machine name/date/Macintosh HD/
以上包含那天我機器上的所有文件。我有很多這樣的目錄,因為備份驅動器包含來自多台機器的東西,過去 3 年。
我感興趣的是找到我的文本和 CSV 文件,例如文件:
/mac1/2014-08-31-173253/Macintosh HD/使用者/我/Documents/work/file1.txt
所以我需要找到路徑**/Users/me**
.txt
上某處的所有文件
您可以使用
find
,前提是它可用:$ find "/mac1/2014-08-31-173253/Macintosh HD" -wholename "*/Users/me/*.txt" -or -wholename "*/Users/me/*.csv"
這將搜尋在其路徑中
/mac1/2014-08-31-173253/Macintosh HD
包含該模式的文件。*/Users/me/*.(txt|csv)
也許你可以這樣做:
set -- for d in /mac[123]/201[1-4]*'/Macintosh HD/Users/me/Documents/work/' do for g in .txt .csv do set -- "$d"*"$g" [ -e "$1" ] || shift done
這樣,您將獲得所有文件名的數組
"$@"
- 但您需要 glob 目錄位 - 這就是它的/mac[123]/
用途,我只是猜測這些目錄的名稱。