Объединение опций в команде находки

Находка -name опция поддерживает файл globbing. Это также поддерживает ограниченный набор подобных regex опций как ограниченные выражения квадратной скобки, но для фактических соответствий regex, использовать -regex.

При поиске соответствия в содержании файла использовать grep -r как предложенный Craig.

Если Вы хотите соответствовать имени файла, то используйте find с -regex опция:

find . -type f -regex '.*[Rr]eading[Tt]est[Dd]ata.*' -print

Отметьте сдвиг в regex, потому что find портативно не поддерживает заключенные в скобки атомы в его regex. Если Вы, оказывается, находитесь в системе Linux, GNU находят поддержки a -regextype опция, которая дает Вам больше контроля:

find . -regextype posix-extended -regex '.*((R|r)eading(T|t)est(D|d)ata).*' -print

Обратите внимание, что, если все Вы ищете, соответствие случая, -iregex или даже -iname может быть достаточным. Если Вы используете bash как Ваша оболочка, globstar решение Gilles должно работать также.

2
19.01.2014, 01:42
2 ответа

Вы не можете объединить символы после -type (если у Вас нет другой находки, чем я имею). Необходимо сделать что-то как:

 find .  \( -type f -o -type d \) -name "somefile"

В моей системе:

 $ find .  -type fd -name "somefile"
 find: Arguments to -type should contain only one letter

Это обменивается сообщениями, прибывает из функции insert_type() в строке 2601 в findutils-4.4.2 find/parser.c. Это просто берет первый символ, более старые/другие версии find сделал IIRC, даже не предупреждают, если было несколько символов после -type.

4
27.01.2020, 22:00
  • 1
    Вы знаете, почему команда находки в особенности не позволяет объединение опций? спасибо –  Ned Schneebly 25.01.2014, 06:48
  • 2
    @NedSchneebly fd была бы комбинация аргумента опции -type не сама опция. Это просто программируется тот путь findобработка опции с единственными тире, но длинными именами опции является, по моему скромному мнению, странной так или иначе. Я обновлю вопрос. –  Timo 26.01.2014, 17:03

Наткнулся на этот вопрос во время учебы. Через два года после вашего вопроса кто-то добавил эту функцию в find, и она была интегрирована в Debian, а оттуда в Ubuntu. Пока не интегрирован в Red Hat (грустно )но может быть в Fedora (не проверял ).

find / -mmin -300 -type f -o -type d -exec ls -l {} \;

ИЛИ

find / -mmin -300 -type f,d -exec file {} \;

Подробнее см. в этой теме .

0
17.10.2021, 14:43

Теги

Похожие вопросы