输入名称与子串

时间:2017-03-25 15:56:42

标签: bash wildcard

我想在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

2 个答案:

答案 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中的行部分匹配的每个目录,以及“填充内容”。