В Unix найти: несколько типов файлов
Я хочу запустить find-name с несколькими типами файлов. Например.
find -name *.h,*.cpp
это возможно?
6 ответов:
$ find . -name '*.h' -o -name '*.cpp'
найти эту информацию в
man
страница, типаman find
и поиск операторов, набрав/OPERATORS
и нажмите enter.The
.
не является строго необходимым с GNU find, но необходим в Unix. Кавычки важны в любом случае, и их исключение приведет к ошибкам, если файлы этих типов появятся в текущем каталоге.в некоторых системах (таких как Cygwin), скобки необходимы, чтобы сделать набор расширений включительно:
$ find . \( -name '*.h' -o -name '*.cpp' \)
find . -name '*.h' -o -name '*.cc'`
работы для поиска файлов.
find . \( -name '*.h' -o -name '*.cc' \)`
работы для выполнения команд на них
find . \( -name '*.h' -o -name '*.cc' \) -exec egrep "#include" {} \; -print | egrep "^\."
вы также можете использовать
-regex
утилиты:
find -E . -iregex ".*\.(js|jsx|html|htm)"
помните, что регулярное выражение смотрит на полный абсолютный путь:
для объяснения этого регулярного выражения с тестовыми случаями проверьте:https://regex101.com/r/oY1vL2/1
-E
(как флаг перед путем) включает расширенные (современные) регулярные выражения.это для BSD
find
(Mac OSX 10.10.5)