列出名称中包含给定字符的文件

列出名称中包含给定字符的文件

我想列出我当前所在目录中的所有文件,例如名称中包含“a”。我知道命令的第一部分是ls -l,但我不知道如何完成它。

答案1

您应该阅读 glob 通配符,包括*?

  • *匹配零个或多个字符
  • ?恰好匹配一个字符
  • [...]匹配一组字符中的一个(例如[abc]匹配a, b,中的任何一个c

因此,要查找包含abc您的所有文件名,只需使用 glob *abc*。这可以在您想要此列表的任何地方使用:

ls *abc*
rm -i *abc*
echo *abc*

不过,请注意,命令行已运行扩张。 (是 shell 执行扩展,而不是命令。)因此,如果您有一个类似 的文件名-abc,则 的扩展ls *abc将导致ls -abc,这将导致解析不带文件名参数ls的标志集。-labc通过在通配符扩展前添加前缀来修复此问题,以./强制使用当前目录的显式路径

ls ./*abc*
rm -i ./*abc*
echo ./*abc*

请注意,对于ls,如果任何参数是目录,则内容将列出该目录的名称而不是目录名称本身。使用标志修复这个问题-d,当你在那里使用时,-q如果你的版本ls支持它,

ls -dq ./*abc*

相关内容