用于检查目录和文件的脚本包含一个单词

时间:2014-01-21 08:03:32

标签: bash command cat

我有以下文件“nbr_chk.txt”,此文件包含可以在任何目录中的数字(从1到10)。它们所在的子目录是第5和第6个数字

nbr_chk.txt 
612345678
623456789
634567890

我想使用该文件创建脚本并执行以下操作:

for i in 'cat nbr_chk.txt'
do
   ls -lrtd /*/d5d6/i   to find the directory
   if there is more than one directory  print  the directories   

   if there is only 1 directory use it and find if there is a file that contains the word  " test"  and print number xxxxxxxxx 


done

编辑1:

例如,编号612345678可以位于以下目录/ 05/45 / 612345678中 但也可以在目录/ 09/45 / 612345678中。

出于这个原因,我需要做一个ls -lrtd / * / ....来查找目录。

如果有多个目录我需要创建错误消息

d5表示数字的第5位和d6表示第6位数字。 如果数字是612300012,数字5 = 0,数字6 = 0,我将不得不使用 ls -lrtd / * / 00/612300012


如果用的是Unix以外的其他语言,我会知道怎么做,但在这里我迷路了。

感谢

2 个答案:

答案 0 :(得分:0)

规范不太清楚,但我会做一些猜测并提出这个:

#!/bin/bash

for i in $(cat nbr_chk.txt)
do
  dirName=d${i:4:1}d${i:5:1}
  grep -q " test" "$dirName"/* && echo "$i"
done

这不能解决你所有的问题,因为有些问题仍然不清楚(至少对我来说)。请详细说明未达到的细节,以便我们将它们纳入解决方案。

答案 1 :(得分:0)

我想你可能正在寻找这样的东西:

#!/bin/bash

for i in $(cat nbr_chk.txt)
do
   dir=d${i:4:1}d${i:5:1}
   echo Checking $dir...
   dirlist=$(find . -type d -name "$dir")
   ndirs=$(find . -type d -name "$dir" | wc -l)
   if [ $ndirs -gt 1 ]; then
      echo $dirlist
   fi
   if [ $ndirs -eq 1 ]; then
      cd $dirlist 
      grep -q " test" * 2> /dev/null && echo $i
   fi
done