Linux 如果不包含特定文件,请给出父文件夹名称
我正在寻找一个终端linux命令,以给出不包含特定文件的文件夹父名称: 现在,我使用以下命令:Linux 如果不包含特定文件,请给出父文件夹名称,linux,terminal,Linux,Terminal,我正在寻找一个终端linux命令,以给出不包含特定文件的文件夹父名称: 现在,我使用以下命令: find . -type d -exec test -e '{}'/recon-all.done \; -print| wc -l 这给了我包含文件的文件夹数量 文件recon all.done将位于/subject/./../recon all.done中,我需要每个不包含recon all.done文件的“subject”名称。在目录中循环,测试文件是否存在,如果测试失败,则打印目录 for s
find . -type d -exec test -e '{}'/recon-all.done \; -print| wc -l
这给了我包含文件的文件夹数量
文件
recon all.done
将位于/subject/./../recon all.done
中,我需要每个不包含recon all.done
文件的“subject”名称。在目录中循环,测试文件是否存在,如果测试失败,则打印目录
for subject in */; do
if ! [ -e "${subject}scripts/recon-all.done" ]
then echo "$subject"
fi
done
你的命令
find . -type d -exec test -e '{}'/recon-all.done \; -print| wc -l
差不多完成了,我们只需要
- 删除
以显示目录路径,该路径不包含| wc-l
文件recon all
- 现在,我们可以通过添加
来否定
-exec测试
代码>像这样:
find-d型\-exec test-e'{}'/recon-all.done\-打印
这样,如果find
不包含recon all
文件,则find
将显示每个文件夹名称
注意;在Barmar的基础上,我添加了一个-maxdepth 1
,以防止检查更深层次的目录
来自我的本地机器的小示例:
$/tmp/test$树
.
├── A.
│ └── test.xt
├── B
├── C
│ └── test.xt
└── x
├── A.
│ └── test.xt
└── B
6个目录,3个文件
$/tmp/test$find-最大深度1-类型d\-exec test-e'{}/test.xt'\-打印
.
/b
./x
$/tmp/测试$
非常感谢您的回复。然后我得到所有不包含该文件的子文件夹,但我只需要父文件夹。文件recon-all.done始终位于以下文件夹中:./subject/scripts/recon-all.done这与您的问题不同。如果您知道scripts
子目录中始终有find
,则不需要使用它。只需检查$subject/scripts/recon all。完成非常感谢您的回复。然后我得到所有不包含该文件的子文件夹,但我只需要父文件夹。文件recon-all.done始终位于以下文件夹中:./subject/scripts/recon-all.done。我只需要主题文件夹名。)主题文件夹包含许多其他文件夹)啊,只是为了降低速度:)我刚刚用max depth
更改了答案以防止出现这种情况,请参见我的示例,它应该与您的情况相匹配。