在我的用户文件夹中,我有类似的文件夹德吊箱,德文件,德下载 &d擔命。
ls a*
应该列出所有以 开头的文件a
。对吧?但是当我输入命令 时ls d*
,它不只是显示,而是dump
显示转储目录的 ls。当我输入命令 时ls D*
,它会显示以 开头的所有文件夹的 ls德
那么我错过了什么部分呢?
编辑:附加屏幕截图
答案1
根据 bash 手册页:
bash 扫描每个单词以查找字符 *、? 和 [。如果出现其中一个字符,则该单词被视为模式,并替换为与该模式匹配的按字母顺序排序的文件名列表
并从信息节点ls
`ls' 程序列出有关文件(任何类型,包括目录)的信息。选项和文件参数可以像往常一样任意混合。
对于目录这样的非选项命令行参数,默认情况下“ls”会列出目录的内容(不递归),并且会忽略名称以“.”开头的文件。对于其他非选项参数,默认情况下“ls”仅列出文件名。如果未指定非选项参数,“ls”会列出当前目录的内容。
所以当你给予时ls d*
,d*扩展为以 d 开头的所有文件/目录名称的排序列表。因此你的命令变为
ls dump
由于 dump 是一个目录名,因此您可以获得目录“dump”中所有文件的列表,但是当您给出时ls D*
,D*扩展为“桌面文档下载 Dropbox",所以命令变成
ls Desktop Documents Downloads Dropbox
由于所有这些都是目录,因此您将获得单个目录中文件的列表。如果有一个文件以德在当前目录中它将被单独列出。
答案2
ls d* 和 D* 分别列出与 d* 和 D* 匹配的文件和文件夹,行为相同,您的测试中一定有错误。
如果您只想列出文件夹名称而不列出文件夹内容,则需要使用“-d”:
ls -d D*
答案3
如上所述,-d
选择是可行的。添加
alias ld='ls -d'
我的~/.bashrc
文件对我来说效果很好。