我正在从事一个开源项目。在深度1的大多数(但不是全部)子目录中,可以找到一个名为“ test.c”的文件。如何找到不包含“ test.c”的目录?
例如,我有子目录dir1,dir2,dir3。 Dir2和dir3具有“ test.c”。我必须手动用“ ls”检查它们,以确定“ dir1”没有“ test.c”。可能有更简单的方法(例如bash命令)来执行此操作?我在Ubuntu 16下使用。因此,最好使用bash命令。
答案 0 :(得分:1)
您可以在所有子目录的基本目录中使用此find
命令:
find . -type d -exec bash -c 'for d; do [[ -f "$d"/test.c ]] || echo "$d"; done' - {} +
此命令从当前目录中查找所有子目录,并在bash命令的每个目录中检查文件test.c
是否存在。如果文件不存在,则会打印目录名称。