我正在检查脚本的输出。在某些情况下,脚本失败,并且未生成某个文件。我想检查此文件是否存在于目录中,如果不存在,则打印目录名称。目录如下所示:
6680_4#22_SMALT
之前的所有数字_SMALT
都是变量(它们是唯一的标识符),目录中的文件将如下所示:
6680_4#22.bam
在这种情况下,前面的数字也是.bam
可变的(它们将与目录的前缀匹配,即前面的 id _SMALT
)。有类似的问题发布,但我对 bash 脚本不太熟悉。一些解释会很有用,而且,我的问题似乎很复杂,因为文件名的前缀会发生变化。任何帮助都将不胜感激。
答案1
类似这样的事情会起作用:
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
发现了某些东西。
编辑:我完全误解了这个问题,所以我重写了我的答案。