列出不包含具有变量前缀的文件的目录

列出不包含具有变量前缀的文件的目录

我正在检查脚本的输出。在某些情况下,脚本失败,并且未生成某个文件。我想检查此文件是否存在于目录中,如果不存在,则打印目录名称。目录如下所示:

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 循环执行以下操作:

  1. 获取指定位置的目录列表。
  2. 对于每个目录运行一个find命令来查找所需的文件名。
  3. 检查命令的输出是否find为空。如果是,则打印目录名称。

要获得相反的结果,请test -n检查该命令的输出是否find发现了某些东西。

编辑:我完全误解了这个问题,所以我重写了我的答案。

相关内容