Как я могу найти имя подстановочного знака во всех подпапках? Что будет эквивалентно команде DOS: dir *pattern* /s
в * nix?
Вы можете использовать find
. Если, например, вы хотите найти все файлы и каталоги, которые есть abcd
в имени файла, вы можете запустить:
find . -name '*abcd*'
Zsh:
ls -ld -- **/*abcd*
ksh93:
set -o globstar # put this line in your ~/.kshrc
ls -ld -- **/*abcd*
Баш ≥4:
shopt -s globstar # put this line in your ~/.bashrc
ls -ld -- **/*abcd*
Яша:
set -o extendedglob # put this line in your ~/.yashrc
ls -ld -- **/*abcd*
Tcsh:
set globstar
ls -ld -- **/*abcd*
рыбы:
ls -ld -- **abcd*
(остерегайтесь некоторых из этих оболочек будут следовать по символическим ссылкам при спуске по дереву каталогов, некоторые из тех , что не нравится zsh
, yash
или tcsh
есть , ***/*abcd*
чтобы сделать это).
Переносимый (за исключением очень старых систем; OpenBSD занял много времени, но, наконец, поддерживает exec … +
с 5.1):
find . -name '*abcd*' -exec ls -ld {} +
Не POSIX, но работает на * BSD, Linux, Cygwin, BusyBox:
find . -name '*abcd*' -print0 | xargs -0 ls -ld
Обратите внимание, что, за исключением некоторых BSD, если соответствующий файл не найден, ls -ld
он будет запущен без аргументов, поэтому появится список .
. В некоторых xargs
реализациях вы можете использовать эту -r
опцию, чтобы обойти это.
globstar
.