我想列出我当前所在目录中的所有文件,例如名称中包含“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*