“ls *.py” 和 “ls *py” 之间有什么区别?

“ls *.py” 和 “ls *py” 之间有什么区别?

这发生在 cygwin 中(CYGWIN_NT-5.1 MYPC 1.7.5(0.225/5/3) 2010-04-12 19:07 i686 Cygwin)

第一个命令,ls *.py什么都没显示

$ ls *.py
ls: cannot access *.py: No such file or directory

第一个命令 ls *.py在相同位置运行,显示以下内容

$ ls *py
LICENSE.txt    _cpchecker.pyc   _cperror.pyc    _cpserver.py          _cptree.pyc         favicon.ico
__init__.py    _cpconfig.py     _cplogging.py   _cpserver.pyc         _cpwsgi.py          lib
__init__.pyc   _cpconfig.pyc    _cplogging.pyc  _cpthreadinglocal.py  _cpwsgi.pyc         process
_cpcgifs.py    _cpdispatch.py   _cpmodpy.py     _cptools.py           _cpwsgi_server.py   scaffold
_cpcgifs.pyc   _cpdispatch.pyc  _cprequest.py   _cptools.pyc          _cpwsgi_server.pyc  wsgiserver
_cpchecker.py  _cperror.py      _cprequest.pyc  _cptree.py            cherryd

这些是子目录 cherrypy 中的文件

我没有ls以任何方式使用别名(运行/usr/bin/ls结果相同)

那么,问题是,为什么会有差异?我不希望在没有标志的ls情况下递归运行-R

答案1

这是因为ls使用文件夹名称运行将列出与您的参数匹配的文件夹的内容。

使用*通配符,任何以 结尾的文件夹py都会列出其内容,例如cherrypy, crappy, bumpy等。

如果有多个文件夹符合条件,它还会显示文件夹名称:

[~/ex]$触摸颠簸/1
[~/ex]$touch sloppy/2
[〜/ ex] $ touch cherrypy / 3 cherrypy / 4 cherrypy / 5
[~/ex]$ls *py
起疙瘩的:
1

cherrypy:
3 4 5

马虎:
2
[〜/ ex] $

当您运行第一个命令时,当前文件夹中没有任何文件夹或文件.py,因此输出。

相关内容