Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何循环文件中的每一行,并将它们用作循环目录的条件?_Linux_Bash_Awk - Fatal编程技术网

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

Linux 如何循环文件中的每一行,并将它们用作循环目录的条件?,linux,bash,awk,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_

我在一个目录中有一个文件,其中包含一些行,比如说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

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

假设包含列表的文件是“list\u 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变量为空。

对于$中的d(
grep$i文件和&echo“使用目录$i做点什么”
@oguzismail:谢谢,它真的很简单,没有想到它!