Как я могу найти имя подстановочного знака во всех подпапках?

26

Как я могу найти имя подстановочного знака во всех подпапках? Что будет эквивалентно команде DOS: dir *pattern* /sв * nix?

Эдуард Флоринеску
источник

Ответы:

40

Вы можете использовать find. Если, например, вы хотите найти все файлы и каталоги, которые есть abcdв имени файла, вы можете запустить:

find . -name '*abcd*'
Райан А.
источник
12

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опцию, чтобы обойти это.

Жиль "ТАК - перестань быть злым"
источник
что делал shop -s globstar ??
Капибаралет
@ user2429920 gnu.org/software/bash/manual/... и нажмите до gnu.org/software/bash/manual/bash.html#The-Shopt-Builtin затем прокрутите вниз globstar.
Жиль "ТАК - перестань быть злым"