我已经看到类似的问题,但没有find与文件直接相关的问题。
有没有办法给我一个不包含特定文件的目录列表?
例:
/dir1/good /dir1/stuff /dir2/junk /dir2/morejunk /dir3/good /dir4/junk
我想运行一个find命令,我只返回不包含文件“good”(dir2和dir4)的目录名称。 有没有find方法或一些组合来做到这一点? 我现在唯一能做的就是运行一个find的文件“good”,保存这个输出并使用awk,sort和comm-3命令来获得我需要的diff。
有没有更简单的方法来做到这一点?
你可以使用-exec test ...来检查目录中是否存在该文件
find /path/to/search -type d \! -exec test -e '{}/good' \; -print
你可以用find和GNU parallel轻松地做到这一点:
$ file=foo && find . -type d | parallel -j+0 "[ -f {}/$file ] || echo $file not in {}"
该命令通过将当前目录下的每个目录进行并行处理。 然后并行启动并行作业来检查每个目录中的文件foo,并在该目录中不存在文件时打印消息。