Відповіді:
Прямий еквівалент є
find . -iname <filename>
в якому будуть перераховані всі названі файли та каталоги <filename> у поточному каталозі, та будь-які підкаталоги, ігноруючи регістр.
Якщо ваша версія пошуку не підтримує -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>в якості маркера для введення користувача - це погана звичка в середовищі командного рядка, де < 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. Глобуси досить близькі, щоб їх можна було впізнати, хоча регулярні виразки є абсолютно новим звіром.
*.*.*робити в сучасних дос, тобто windows cmd? Про що *.*.*.*?
Це може бути також: tree -if </your/path>або 'pwd'як шлях
<filename>містять підстановку, використовуйте цитати навколо неї, наприкладfind . -name '*.txt'.