我正在检查脚本的输出。 在某些情况下,脚本失败了,某个文件还没有被生成。 我想检查这个文件是否存在于一个目录中,如果不存在,打印目录名称。 目录看起来像:
6680_4#22_SMALT
_SMALT之前的所有数字都是可变的(它们是一个唯一的标识符),目录中的文件将如下所示:
6680_4#22.bam
在这种情况下, .bam之前的数字是可变的(它们将匹配目录的前缀,即_SMALT之前的id)。 有类似的问题发布,但我不熟悉bash脚本。 一些解释将是有用的,而且,我的问题似乎更复杂的事实是文件名称的前缀更改。 任何帮助将不胜感激。
像这样的东西可以工作:
for dir in `find ./serverfault -maxdepth 1 -type d` do find_output=$( find ${dir} -type f -name "*#*_SMALT" ) test -z "${find_output}" && echo $dir done
这个for循环执行以下操作:
find命令来查找所需的文件名。 find命令的输出是否为空。 如果是打印目录名称。 为了得到相反的结果,使用test -n来检查find命令的输出是否find了一些东西。
编辑 :我完全误解了这个问题,所以我重写了我的答案。