如何在 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
: 这将获取所有目录。
我想看看哪个目录没有*.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
: 这将获取所有目录。