gpt4 book ai didi

linux - 使用 ls 仅查找具有扩展名的文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:00:00 25 4
gpt4 key购买 nike

我只需要在目录中使用 ls 查找具有扩展名的文件(不能使用 find)。

我试过 ls *.*,但如果 dir 不包含任何带扩展名的文件,它会返回“没有这样的文件或目录”。

我不想要那个错误,如果有带扩展名的文件,我希望 ls 返回到 cmd 提示符。

我尝试将 grep 与 ls 结合使用来实现相同的目的。

ls|grep "*.*"- 不起作用但是我| grep“\”有效。

我不知道为什么 grep *.* 不起作用。感谢您的帮助!

谢谢!

最佳答案

我认为正确的解决方案是这样的:

( shopt -s nullglob ; echo *.* )

它有点冗长,但无论你有什么样的时髦文件名,它总是有效的。 (将 ls 传递给 grep 的问题在于,典型的系统允许在文件名中使用非常奇怪的字符,例如换行符。)

shopt -s nullglob 部分启用 ("sets") nullglob shell opt 选项,它告诉 Bash 如果没有文件的名称与 *.* 匹配,则应该删除 *.*(即,应该扩展为什么都没有)而不是一个人呆着。

括号 (...) 用于设置子 shell,因此 nullglob 选项仅针对脚本的这一小部分启用。

关于linux - 使用 ls 仅查找具有扩展名的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15870952/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com