如何在 bash shell 中使用查找结果作为正则表达式的一部分

how to use find result as part of regex in bash shell

我想看看哪个目录没有*.dsc文件,所以试了一下:

find . -type d -exec ls {}/*.dsc

输出如下:

ls: connot access './abc/*.dsc': No such file or directory

我确定abc/ 目录中有一个dsc 文件。 似乎 bash shell 会将“{}/*.dsc”视为字符串而不是正则表达式,所以我又试了一次:

find . -type d|xargs -I {} ls {}/*.dsc

但结果是一样的。 我怎样才能让命令按我的需要工作?

我无法在 find + ls 中使用通配符,但下面的命令有效。

find . -type d -not -path . | while read -r dir; do [ -f $dir/*\.dsc ] || echo $dir; done

单独检测*.dsc文件是否存在,否则回显目录

你能试试这个吗:

find . ! -iname "*.dsc" -type d

!:这个用来否定匹配。它会列出除扩展名为 .dsc 的文件以外的所有内容。

-type d: 这将获取所有目录。