如何遍历文件中的每一行并将它们用作循环遍历目录的条件?

时间:2020-01-30 09:39:01

标签: linux bash awk

我在一个包含一些行的目录中有一个文件,例如10。在该目录中,我还有其他子目录,例如100。我想要的是:转到与该子目录“匹配”的每个子目录。文件中存在目录名称。因此,基本上,我需要一种“匹配字符串”条件,该条件将比较文件的每一行和每个子目录,然后在存在匹配项时转到特定的子目录。

文件如下:

SCEL16_4_2_2_0_0_2
SCEL1_1_1_1_0_0_0
SCEL32_4_4_2_2_2_0
SCEL32_4_4_2_2_2_0
SCEL32_4_4_2_2_2_0
SCEL32_4_4_2_2_2_0
SCEL32_4_4_2_2_2_0
SCEL32_4_4_2_2_2_0
SCEL8_8_1_1_0_0_7
SCEL8_8_1_1_0_0_6

该目录包含大约100个或更多具有相似命名的子目录。我需要一种方法来仅浏览文件中提到的这10个子目录。我尝试做类似的事情:

for i in */; do echo $i; done

告诉我当前目录中存在的所有子目录,但是我不知道如何在上述命令中在此处施加“匹配”条件。有什么快速解决的办法吗?

1 个答案:

答案 0 :(得分:0)

让我们说包含列表的文件是“ list_dirs”

使用类似下面的逻辑

for dir in list_dirs; do
perm=$(ls -la $dir 2>/dev/null);
if [-n $perm ]; 
then 
    // here do whatever is need if it matches
else
    // else part here
fi

逻辑:

ls -la将检查目录是否存在,并且由于存在2>/dev/null,它将使perm变量为空。