1

Это происходит в 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 ответ1

6

Это связано с тем, что при запуске ls с именем папки будет выведено содержимое папки, соответствующей вашему аргументу.

Используя * в качестве подстановочного знака, все папки, оканчивающиеся на py будут иметь свое содержимое в списке, например cherrypy, crappy, bumpy и т.д.

Если несколько папок соответствуют критериям, вам также будут показаны имена папок:

[~/ex]$touch bumpy/1
[~/ex]$touch sloppy/2
[~/ex]$touch cherrypy/3 cherrypy/4 cherrypy/5
[~/ex]$ls *py
bumpy:
1

cherrypy:
3  4  5

sloppy:
2
[~/ex]$

У вас не было никаких папок или файлов непосредственно в вашей текущей папке, которая заканчивалась на .py когда вы запускали первую команду, отсюда вывод.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .