Как Искать несколько слов (в любом порядке) в имени файла - GUI (или терминал)

Я ищу средство поиска (от рабочего стола Ubuntu 14.04) или метод/команда (Терминал), который позволит мне искать в именах файлов полные или частичные слова, в любом порядке, независимо от капитализации.

Вы знаете об одном?

Вот пример того, что я должен сделать. Я знаю это где-нибудь под /home/myusername У меня есть файл, имя которого содержит "персональные" слова, "доход", "налог", "состояние". Но я не могу помнить, ли имя файла

  • state personal income tax return.doc или
  • personal Income Tax return - state.doc или
  • income tax return - State - personal.doc.

и я также не могу помнить, использованы ли для своей выгоды некоторые слова. Кроме того, у меня есть огромное количество других файлов с каждым из слов в них. Таким образом, просто выполнение простого поиска на одном из слов (только как "состояние" или только "налог") не помогает мне очень, потому что это возвращает слишком много файлов.

Идеально, я хотел бы смочь просто ввести [доходный возврат состояния] или [доходный возврат состояния] и иметь его возвращает файлы со всеми тремя словами в имени файла, независимо от капитализации или порядка слов. Инструмент GUI был бы предпочтителен, но Терминальный метод будет в порядке также.

Я попробовал Зубатку и средство поиска гнома / "Поиск Файлов" - ни один из них, кажется, не работает на несколько критериев поиска, если условия не вводятся в порядке того, как они происходят в имени файла без других слов, промежуточных критерии поиска.

1
задан 17 February 2015 в 17:37

4 ответа

Не используйте grep! find имеет превосходный синтаксис соответствия имени файла. Использовать Ваш пример:

find [PATH...] -iname '*personal*' -iname '*income*' -iname '*tax*'

, где [PATH...] нуль или больше путей, под которыми можно искать.

, Если Вы не отключили Ваш mlocate база данных имени файла, это может быть быстрее для использования его для более быстрого поиска. К сожалению, это не поддерживает несколько соединительных критериев поиска, таким образом, Вам нужно grep также:

locate -ib income | grep -i personal | grep -i tax

, Так как Вы собираетесь посмотреть на результат поиска так или иначе, может быть лучше искать надмножество (в случае, если Ваша память не служит Вам хорошо):

locate -ib income
3
ответ дан 10 November 2019 в 08:42

Можно использовать grep так же много раз для так же слов, которые Вы хотите искать в именах файлов. Например, чтобы узнать имена файлов, содержащие слова "доход", "налог", "персональный" и "указать" Вам, может сделать следующее:

ls -R /home/myusername/ | grep -i "income"  | grep -i "tax" | grep -i "personal" | grep -i "state"

Здесь эти -i переключатель гарантирует нечувствительность к регистру.

ПРИМЕЧАНИЕ:

find лучше подошел бы для этого вида сценария. Проверьте этот ответ и этот ответ для деталей.

1
ответ дан 10 November 2019 в 08:42

То, что я обычно делаю, находится в моем корневом каталоге find . | grep 'SEARCHTERM1\|SEARCHTERM2'

0
ответ дан 10 November 2019 в 08:42

Это можно легко сделать с помощью инструмента нечеткого поиска под названием fzf. Установите его с https://github.com/junegunn/fzf и вам будет интересно, как вы обходились без него.

0
ответ дан 3 August 2020 в 06:36

Другие вопросы по тегам:

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