Знайдіть файли з певними розширеннями


67

Як я можу findзнайти всі файли, які мають .xlsабо .csvрозширення? Я бачив -regexваріант, але не знаю, як його використовувати.

Відповіді:


115

Чому б просто не скористатися цим:

find -name "*.xls" -o -name "*.csv"

Для цього вам не потрібен регулярний вираз.

Якщо ви абсолютно хочете використовувати регекс, просто використовуйте

find -regex ".*\.\(xls\|csv\)"

8
Краща відповідь, ніж моя. +1.
Пол Томблін

1
Для чого потрібен зворотний нахил перед дужками? Я знаю, що без нього це не працює, але здається, що так і повинно.

1
тому що вони є регулярними виразами emacs за замовчуванням. використовуйте -regextype, щоб змінити це.

4
Тільки для запису: я ніколи не можу згадати, які інструменти хочуть "\ (" для групування та які хочуть "(". Я завжди мушу спробувати це, щоб це знати.
Йоахім Зауер

1
Приклад regex не працює
hostmaster

12
find . \( -name  \*.xls -o -name \*.csv \) -print

Не знав про варіант -o. Дякую!

1
Чи потрібні дужки? знайти. '(' -name * .xls -o -name * .csv ')' - print

@Adrian - ні, це не так. Я не впевнений, чи знадобляться паролі в не GNU-знахідці, де "-print" вже не було дією за замовчуванням.
Пол Томблін

5
Ну, GNU find (за замовчуванням у ubuntu 11.04) працює правильно з обома паренами та -print АБО без (parens та -print). Але find . -name \*.xls -o -name \*.csv -printвиводить лише файли, що відповідають .csv,
bbaja42

Ти маєш рацію, мені потрібні парени.
Пол Томблін
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.