Bash
你如何獲得每個子目錄中與文件副檔名列表匹配的第一個文件?
你如何獲得每個子目錄中與文件副檔名列表匹配的第一個文件?我的目標是在一系列子目錄中的任何一個文件上執行程序。
例如,下面有 3 個子目錄。我想在 subdir1/file.dat、subdir2/file.d01 和 subdir3/file1.dat 上執行程序,因為我想查找副檔名為 .dat 或 .d01 的文件。
subdir1 - file.dat, file.d01 subdir2 - file.d01, file.d02, file.d03 subdir3 - file1.dat, file2.dat
以下工作了一段時間,直到我開始遇到像最後兩個這樣的目錄。subdir3 是有問題的,因為所有文件最終都會得到處理。
find . -name "*.dat" -exec mixb {} \;
與
zsh
:for d (subdir*(/)) mixb $d/*.(dat|d01)([1])
bash
相當於:shopt -s nullglob extglob for d in subdir*/; do [ -L "${d%/}" ] && continue set -- "$d"*.@(dat|d01) [ "$#" -eq 0 ] || mixb "$1" done