如何执行使用for循环列出的目录列表的操作?

时间:2014-06-18 12:30:53

标签: linux for-loop awk scripting

我正在检查下面目录列表中是否存在目录。下面是列出的表格。这是关于此类目录的唯一可用表。

  

用户@根>猫你

     

目录所有者值
  -------- ---- -----
  0-0-1-0 Aleks 10
  0-0-2-0拉姆23
  0-0-3-0马克43
  0-0-4-0萨姆22   0-0-5-0木21   0-0-6-0彼得34
  0-0-7-0 ron 45
  0-0-8-0 Alic 44
  0-0-9-0琥珀56
  0-0-10-0 janny 34

     

用户@根> cat u | grep -Ev“owner | - ”| awk'{print $ 1}'
  0-0-1-0
  0-0-2-0
  0-0-3-0
  0-0-4-0
  0-0-5-0
  0-0-6-0
  0-0-7-0
  0-0-8-0
  0-0-9-0
  0-0-10-0

查询:

我想登录从0-0-1-00-0-10-0的所有目录并执行一些操作。我怎样才能做到这一点 ?

例如,我想验证所有目录中是否存在XYZ目录。

  

user @ root> test -d 0-0-1-0 / XYZ;如果[“$?” !=“0”];然后回显“目录丢失”fi

我认为如果我可以在某个变量中逐步存储每一行​​的值,那么问题将得到解决。

2 个答案:

答案 0 :(得分:0)

如果你知道DIR_NAME_TO_BE_SEARCHED,那么你可以使用以下命令:

找到YOUR_STARTING_DIRECTORY -type d -name DIR_NAME_TO_BE_SEARCHED -print

示例:

找到。 -type d -name test -print

解释:

将找到从当前目录开始的所有目录(-type d),其名称为test(-name test)并输出它们(-print)。

如果你不知道确切的DIRECTORY_NAME_TO_BE_SEARCHED,那么你也可以使用模式:

找到YOUR_STARTING_DIRECTORY -type d -name" DIR_NAME_TO_BE_SEARCHED_PATTERN" -print

例如: 找 。 -type d -name" * test *" -print

答案 1 :(得分:0)

您可以像这样处理您的文件列表:

#!/bin/sh
for dir in $(awk 'NR>2 {print $1}' $1)
do
   if [[ -d "$dir" ]]
   then
     cd "$dir"
     pwd
     # Do random stuff
   fi
done

运行如下脚本:

./script.sh my_list_of_files

如果目录存在,它将cd到该目录并运行pwd。

但是有一个警告,如果你的任何目录中有空格,这个脚本会有点混乱。