- 在 for 回圈中,如何同時搜索特定字串或檔案擴展名?
我有沒有擴展名但檔案名中有字串“-DT-”的檔案,以及其他擴展名為 .fff 的檔案。我想處理這兩種型別。
local dir imfiles
for imfiles in "$dir"**/*-DT-!(.jpg); do
printf "File processed: ${imfiles}\n"
done
- 如何使 for 回圈不僅查找具有字串 -DT- 的檔案,而且查找具有擴展名 .fff 的檔案?
結果將是 for-loop 處理這兩種型別的檔案。我嘗試過使用陣列,但是沒有用。我見過很多 for-loop 的例子,但沒有一個接近這個特定的場景。
uj5u.com熱心網友回復:
嘗試
shopt -s dotglob extglob nullglob globstar
for imfiles in "$dir"**/@(*-DT-!(*.jpg)|*.fff); do
printf "File processed: ${imfiles}\n"
done
- 請參閱glob - Greg 的 Wiki中的extglob部分,了解和的解釋。
!(*.jpg)@(*-DT-!(*.jpg)|*.fff)
uj5u.com熱心網友回復:
由于兩組不重疊,您可以指定一個接一個:
for imfile in "$dir"/*-DT-!(*.*) *.fff ; do
uj5u.com熱心網友回復:
find一種用于定位所需檔案的想法(假設所有檔案位于相同的$dir):
while read -r imfiles
do
printf "File processed: ${imfiles}\n"
done < <(find "${dir}" -name "*-DT-*" -o -name "*.fff" 2>/dev/null)
如果檔案位于不同的目錄下,則鏈 2find呼叫在一起,例如:
while read -r imfiles
do
printf "File processed: ${imfiles}\n"
done < <(find "${dir}" -name "*-DT-*" 2>/dev/null; find . -name "*.fff" 2>/dev/null)
注意:根據需要調整find命令,例如,不要在子目錄中搜索,尋找特定大小的檔案等。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/491712.html
上一篇:打開時粘手風琴頭
