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


Ответы:


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 ??
Капибаралет

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.