我想在for循環中輸入多個目錄。我沒有完整的目錄名稱,只有它的一部分。輸入名稱與子串匹配的目錄
我想這樣做,你會在終端上寫什麼,像cd *IncompleteDirName*
這是循環的MVE:IncompleteDirName
的是從文件IncompleteDirNames
獲得。
cont=1
sum=1
while read anotherFILE; do
IncompleteDirName=$(sed "${cont}q;d" IncompleteDirNames)
cd *"${IncompleteDirName}"*
# Do stuff
cd ..
cont=$((cont + sum))
done <anotherFILE
這是行不通的,我不知道這是否與通配符不擴展或變量不能正常工作。
它扔我這個錯誤消息:
*:沒有這樣的文件或目錄
我想這意味着按預期星號無法正常工作。它沒有進入目錄,並且有一個匹配每個模式的目錄。無論如何,沒有目錄被輸入。
這是IncompleteDirNames
文件看起來的樣子:
Alicante Almeria Andalucia Avila
這是名稱的列。 這些是對應於IncompleteDirName
S上方的目錄名稱:
aa4fas_Alicante_com
mun_Almeria
comunidadde_Andalucia
ciuAvila
「不工作」是什麼意思?我無法準確理解這裏發生了什麼,因爲這是一個實際上並不運行*的例子。子字符串在文件中,那些子字符串是目錄名稱的一部分,並且您想在每個與「FILE」中的子字符串部分匹配的目錄中「做東西」?如果一個子字符串匹配多個目錄會怎樣?文件'code'和'p-ca'裏面有什麼? – ghoti
我確定沒有多個目錄匹配。我已更正了代碼。 – D1X
你需要澄清什麼是行不通的。有一件事是肯定的:如果你的不完整的名字可以匹配很多目錄,並且你想在每個目錄中做一些事情,你需要一個循環。您還需要爲沒有目錄匹配的情況做準備,在您的試驗性代碼中,這會導致「cd」命令失敗,但不會阻止執行「Do stuff」部分。 – Fred