Ответы:
Прямой эквивалент
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>качестве маркера для 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 . | egrep filename
find . -regextype posix-egrep -regex '.*filename.*'(я не знаю, egrepважна ли эта часть, но вы использовали egrepв своем ответе, поэтому я включил ее)
grepиспользует регулярные выражения, в то время как команда DOS использует подстановочные знаки оболочки.
find . -name "*.*"не будет делать то, что вы ожидаете от фона DOS. Однако глобусы достаточно близки, чтобы их можно было узнать, а регулярные выражения - совершенно новое чудовище.
*.*.*в современном DOS, то есть Windows CMD? Как насчет *.*.*.*?
Это может быть также: tree -if </your/path>или 'pwd'как путь
<filename>содержит символы подстановки, используйте кавычки, напримерfind . -name '*.txt'.