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



i具有以下文件" nbr_chk.txt",此文件包含可以在任何目录中的数字(从1到10)。它们所在的子目录是第五和第六个数字

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位数字和数字的第六位。如果数字为612300012数字5 = 0,并且数字6 = 0,则必须使用LS -LRTD/*/00/612300012


如果是用其他语言,我会知道该怎么做,但是我迷路了。

谢谢

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

#!/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

这无法解决您遇到的所有问题,因为有些仍然不清楚(至少对我来说)。请详细说明非计算细节,以便我可以将它们放入解决方案中。

我认为您可能正在寻找这样的东西:

#!/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

相关内容

  • 没有找到相关文章

最新更新