查找不包含文件的深度为1的子目录

时间:2019-05-27 11:57:22

标签: linux bash command-line

我正在从事一个开源项目。在深度1的大多数(但不是全部)子目录中,可以找到一个名为“ test.c”的文件。如何找到不包含“ test.c”的目录?

例如,我有子目录dir1,dir2,dir3。 Dir2和dir3具有“ test.c”。我必须手动用“ ls”检查它们,以确定“ dir1”没有“ test.c”。可能有更简单的方法(例如bash命令)来执行此操作?我在Ubuntu 16下使用。因此,最好使用bash命令。

1 个答案:

答案 0 :(得分:1)

您可以在所有子目录的基本目录中使用此find命令:

find . -type d -exec bash -c 'for d; do [[ -f "$d"/test.c ]] || echo "$d"; done' - {} +

此命令从当前目录中查找所有子目录,并在bash命令的每个目录中检查文件test.c是否存在。如果文件不存在,则会打印目录名称。