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