Найти файлы с одним из нескольких расширений [duplicate]

Другой общий случай, когда можно получить это исключение, включает в себя насмешливые классы во время модульного тестирования. Независимо от используемой насмешливой структуры, вы должны убедиться, что все соответствующие уровни иерархии классов должным образом высмеиваются. В частности, все свойства HttpContext, на которые ссылается тестируемый код, должны быть изделены.

См. « Исключение NullReferenceException при проверке пользовательского AuthorizationAttribute » для несколько подробного примера.

50
задан Jacko 25 August 2011 в 13:44
поделиться

6 ответов

$ find . -name '*.h' -o -name '*.cpp'

Чтобы найти эту информацию на странице man, введите man find и выполните поиск операторов, набрав /OPERATORS и нажмите enter.

. не является строго необходимо с GNU find, но необходимо в Unix. Кавычки важны в любом случае, и их исключение вызывает ошибки, если файлы из этих типов отображаются в текущем каталоге.

В некоторых системах (таких как Cygwin) круглые скобки необходимы, чтобы сделать набор расширения включительно:

$ find . \( -name '*.h' -o -name '*.cpp' \)
77
ответ дан Dave Jarvis 26 August 2018 в 21:29
поделиться

Вы также можете использовать утилиту -regex:

find -E . -iregex ".*\.(js|jsx|html|htm)"

Помните, что регулярное выражение просматривает полный абсолютный путь:

объяснение этого регулярного выражения с тестовыми примерами: https://regex101.com/r/oY1vL2/1

-E (как флаг ДО путь) позволяет расширенное (современные) регулярные выражения.

Это для BSD find (Mac OSX 10.10.5)

4
ответ дан Evan 26 August 2018 в 21:29
поделиться
find . -name '*.h' -o -name '*.cc'`

работает для поиска файлов.

find . \( -name '*.h' -o -name '*.cc' \)`

работает для выполнения команд на них

find . \( -name '*.h' -o -name '*.cc' \) -exec egrep "#include" {} \; -print | egrep "^\."
8
ответ дан Hans Z. 26 August 2018 в 21:29
поделиться
find . -name "*.h" -or -name "*.cpp"

работает для меня.

7
ответ дан jham 26 August 2018 в 21:29
поделиться

То, что я использую

find . \( -name "*.h" -o -name "*.cpp" \) -print
18
ответ дан Pierre Lacave 26 August 2018 в 21:29
поделиться

Это то, что я использую. Я настоятельно рекомендую аргумент «-regextype posix-extended».

find . -type f -iname "*.log" -o -iname "*.gz" 
find . -type f \( -name "*.gz" -o -name "*.log" \)
find . -type f -regex '.*\(\.gz\|\.log\)'
find . -type f -regextype posix-extended -regex '.*.(log|gz)'
0
ответ дан xoyabc 26 August 2018 в 21:29
поделиться