【问题标题】:How to loop through every line in a file and use them as a condition to loop though directories?如何遍历文件中的每一行并将它们用作遍历目录的条件?
【发布时间】:2020-01-30 09:39:01
【问题描述】:

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

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

【问题讨论】:

  • for d in $(<your_file); do echo $d; done???
  • grep $i file && echo "Do something with directory $i"
  • @oguzismail:谢谢,真的很简单,没想到!

标签: linux bash awk


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    • 2014-02-05
    • 1970-01-01
    • 2020-02-02
    • 1970-01-01
    • 1970-01-01
    • 2011-06-22
    相关资源
    最近更新 更多