我想在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
对应的目录名称:
aa4fas_Alicante_com
mun_Almeria
comunidadde_Andalucia
ciuAvila
答案 0 :(得分:0)
试试这段代码 -
cont=1
sum=1
while read FILE; do
IncompleteDirName=$(sed "${cont}q;d" FILE)
cd *"${IncompleteDirName}"*
# Do stuff
cd ..
cont=$((cont + sum))
done <IncompleteDirNames
答案 1 :(得分:0)
您可以执行以下操作:
#!/bin/bash
while read -r line; do
cd /absolute/path/to/*$line*
# do stuff
done < filename
这将输入名称与filename
中的行部分匹配的每个目录,以及“填充内容”。