Как отметил Джефф Шаллер , *
обычно работает как ls
- {{ 1}} он не будет показывать вещи, имена которых начинаются с .
(точка).
Если вы используете bash,
и хотите получить вещи, имена которых начинаются с .
,
s et (включить) sh ell opt ion dotglob
с помощью команды
shopt -s dotglob
Это заставит *
работать как ls -A
- он все равно не будет отображаться .
и ..
сами по себе, но покажет все остальное, начиная с .
.
В вашем вопросе упоминается «все в каталоге».
Это несколько двусмысленная фраза.
Если вы имеете в виду все, что находится в каталоге (верхнего уровня) / Applications
,
, тогда другие ответы подходят.
Но если вам нужно все в дереве / Приложения
(т. Е., все в каталоге / Applications
и его подкаталогах ),
и вы используете bash, установите параметр оболочки globstar
с помощью команды
shopt -s globstar
Это приведет к тому, что **
как компонент имени файла будет означать
все здесь и ниже. Итак,
для файла в / Applications / **
do
echo "$ file"
done
отобразит все объекты (файлы, каталоги и т. д.)
в дереве / Applications
.
Обратите внимание, что это нельзя комбинировать с другими символами
на том же уровне компонента; то есть вы не можете делать такие вещи, как foo ** bar
.
Однако вы добавляете другие компоненты после **
.
Например,
для файла в / Applications / ** / README
будет перебирать все файлы с именем README
в / Applications
,
и
для файла в /Applications/**/*.txt
найдут все файлы, имена которых заканчиваются на .txt
.
Вы можете установить несколько параметров одновременно; например, с помощью
shopt -s dotglob globstar
Полный список опций см. в документации по bash.
Вы можете установить параметры u nset с помощью shopt -u
.
"$ file"
), если у вас нет веской причины не делать этого,
и вы уверены вы знаете, что делаете.