嗨,我是一个新手linux用户。我试图在bash中使用find命令来搜索给定的目录,每个目录包含多个具有相同名称但具有不同内容的文件,以在文件中查找最大值。对bash中find命令的多个结果进行操作
起初,我没有服用该目录作为输入,并知道该文件将不低于2个目录深,所以我是用嵌套循环如下:
prev_value=0
for i in <directory_name> ; do
if [ -d "$i" ]; then
cd $i
for j in "$i"/* ; do
if [ -d "$j" ]; then
cd $j
curr_value=`grep "<keyword>" <filename>.txt | cut -c32-33` #gets value I'm comparing
if [ $curr_value -lt $prev_value ]; then
curr_value=$prev_value
else
prev_value=$curr_value
fi
fi
done
fi
done
echo $prev_value
显然这不会削减它现在。我查看了find的-exec选项,但是由于find产生了大量的结果,我只是不确定如何处理变量赋值和比较。任何帮助将不胜感激,谢谢。
奇妙的是,我正在扫描手册页以获得正确的标志。提供管道的解释(OP说他是新的!),并且你有我的真诚投票:) – slezica
这真的很有帮助谢谢。但是我可能应该提到我需要解析的文件包含在多个目录中。我不知道这是否有道理,但我基本上需要能够按日期搜索,即/2013.04.07,/2012.*和/ *需要能够工作,如果它们作为参数传递 – user3025408
Don'当你不需要它时使用'xargs'。这个更短更好:'find“$ DIRECTORY”-name“$ FILENAME.txt”-exec grep“$ KEYWORD”{} \;'。当'$ DIRECTORY'足够时,为什么使用'$ {DIRECTORY}'风格更长的时间呢? – janos