Перечислите все файлы / каталоги в или ниже текущего каталога, которые соответствуют «имя файла».
Прямой эквивалент
find . -iname <filename>
в котором будут перечислены все файлы и каталоги, вызываемые <filename>
в текущем каталоге, и любые подкаталоги, без учета регистра.
Если ваша версия find не поддерживает -iname
, вы можете использовать -name
вместо этого. Обратите внимание, что в отличие от -iname
, -name
чувствителен к регистру.
Если вы хотите перечислить только файлы с именами <filename>
, а не каталоги, добавьте-type f
find . -iname <filename> -type f
Если вы хотите использовать подстановочные знаки, вы должны поставить вокруг них кавычки, например
find . -iname "*.txt" -type f
в противном случае оболочка расширит его.
Как уже отмечали другие, вы также можете сделать:
find . | grep "\.txt$"
grep
будет печатать строки на основе регулярных выражений, которые являются более мощными, чем подстановочные знаки, но имеют другой синтаксис.
Смотрите man find
и man grep
для более подробной информации.
<filename>
содержит символы подстановки, используйте кавычки, напримерfind . -name '*.txt'
.<filename>
качестве маркера для userinput - плохая привычка в среде командной строки, где< and >
большую часть времени имеет конкретное значение. Я предлагаю просто использоватьfilename
, может быть, FILENAME, чтобы подчеркнуть это. Большинство людей поймут, и те, кто этого не сделает, могут причинить вред, если не поймут, что они не должны попадать в знак «меньше или больше».<filename>
Это соглашение во многих документах UNIX, поэтому я думаю, что людям полезно знать об этом, но я согласен, чтоFILENAME
может быть легче понять.find -iname <filename>
лучше, так как он нечувствителен к регистру, как DOSПозволяют некоторые снаряды
ls **/filename
, что довольно удобно.источник
shopt -s globstar; echo **/filename
эквивалентенfind . -name "filename"
. Это также работает в Zsh.shopt -s globstar
, это, вероятно, будет работать для вас. Рекурсивное сглаживание - это функция, которая доступна только в некоторых оболочках, а иногда она не включена по умолчанию.shopt
команда включает эту опциюglobstar on
. Теперь это работает как шарм. Большое спасибо.Вы можете сделать это с
источник
find . -regextype posix-egrep -regex '.*filename.*'
(я не знаю,egrep
важна ли эта часть, но вы использовалиegrep
в своем ответе, поэтому я включил ее)grep
использует регулярные выражения, в то время как команда DOS использует подстановочные знаки оболочки.find . -name "*.*"
не будет делать то, что вы ожидаете от фона DOS. Однако глобусы достаточно близки, чтобы их можно было узнать, а регулярные выражения - совершенно новое чудовище.*.*.*
в современном DOS, то есть Windows CMD? Как насчет*.*.*.*
?Это может быть также:
tree -if </your/path>
или'pwd'
как путьисточник