Как найти несколько типов файлов в одном поиске?

Я много искал об этом, но я не могу найти ответ, который удовлетворяет мои потребности. Я хочу простой способ поиска двух типов файлов или более (например, * .mp3, * .aac, * .pdf и т. Д.). Я понимаю, что поиск команды Linux делает это через терминальные запросы, но мне нужна программа с GUI для этой конкретной потребности. Я попытался найти Nemo File Manager в поиске, то же самое касается Caja, PCManFM и других. Я также экспериментировал с сомом и searchmonkey. Я просто не могу получить каких-либо продуктивных результатов. Любая помощь высоко ценится. Заранее спасибо.

  • В чем разница между / tmp и / run?
  • Прочитайте файл и найдите все вхождения и создайте хэш для содержимого между вхождениями
  • Команда запускается из оболочки, но не запускается из сценария.sh
  • Потенциальные проблемы (если они есть) при рекурсивной замене пробелов символами подчеркивания во всех именах файлов на жестком диске
  • Возможно ли создать динамический контент при операции чтения файлов?
  • Когда файл освобождается в файловой системе ext?
  • измерять количество данных, считанных с / dev / random
  • Как увеличить количество inodes в файловой системе ext4?
  • One Solution collect form web for “Как найти несколько типов файлов в одном поиске?”

    Если вам действительно не нужна скорость C, я бы рекомендовал язык сценариев (Ruby, Python или аналогичный). Вы сможете выполнять сложные задания без утомительности C (без пламени, пожалуйста).

    Вот что я сделал бы:

    • Используйте интерфейс Python-GTK для создания графического интерфейса: вам нужны только 4 виджета: Gtk.Window, Gtk.VBox (для хранения следующих двух элементов), Gtk.Entry для ввода типов файлов и Gtk.TreeView показать результаты

    • Из Python вы можете легко комбинировать список из Gtk.Entry и команды find + options + типы файлов, чтобы получить список. (Вы можете выполнить команду find из subprocess.checkcall ).

    Checkcall возвращает список, который затем можно показать в Gtk.TreeView.

    Если вы хотите изучить Python, в сети есть много отличных уроков. Это официальный учебник на сайте Python . Сайт learnPython очень интересен, так как вы даже можете попробовать свои программы. В этом руководстве вам должно быть все, что вам нужно, чтобы использовать материал GUI в Python с большим количеством примеров.

    Язык сценария, такой как Python, идеально подходит для решения таких проблем, как тот, который вы описываете.

    EDIT У меня было время и подумал, что неплохо иметь компактный GUI-искатель. Ниже приведен рабочий код. Да, это длиннее 20 строк, главным образом потому, что я построил весь графический интерфейс в коде. Если бы я использовал Glade (дизайнер GUI), код был бы сокращен вдвое. Кроме того, я добавил диалог для выбора корня поиска.

     #!/usr/bin/env python3 # -*- coding: utf-8 -*- # # test_finder.py # # Copyright 2016 John Coppens <john@jcoppens.com> # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, # MA 02110-1301, USA. # # from gi.repository import Gtk import os, fnmatch class MainWindow(Gtk.Window): def __init__(self): super(MainWindow, self).__init__() self.connect("destroy", lambda x: Gtk.main_quit()) self.set_size_request(600, 400) vbox = Gtk.VBox() # Pattern entry self.entry = Gtk.Entry() self.entry.connect("activate", self.can't open file 'pyfind.py'on_entry_activated) # Initial path selection self.path = Gtk.FileChooserButton(title = "Select start path", action = Gtk.FileChooserAction.SELECT_FOLDER) self.path.set_current_folder(".") # The file list + a scroll window self.list = self.make_file_list() scrw = Gtk.ScrolledWindow() scrw.add(self.list) vbox.pack_start(self.entry, False, False, 0) vbox.pack_start(self.path, False, False, 0) vbox.pack_start(scrw, True, True, 0) self.add(vbox) self.show_all() def make_file_list(self): self.store = Gtk.ListStore(str, str) filelist = Gtk.TreeView(model = self.store, enable_grid_lines = True) renderer = Gtk.CellRendererText() col = Gtk.TreeViewColumn("Files:", renderer, text = 0, sizing = Gtk.TreeViewColumnSizing.AUTOSIZE) filelist.append_column(col) col = Gtk.TreeViewColumn("Path:", renderer, text = 1) filelist.append_column(col) return filelist def on_entry_activated(self, entry): self.store.clear() patterns = entry.get_text().split() path = self.path.get_filename() for root, dirs, files in os.walk(path): for name in files: for pat in patterns: if fnmatch.fnmatch(name, pat): self.store.append((name, root)) def run(self): Gtk.main() def main(args): mainwdw = MainWindow() mainwdw.run() return 0 if __name__ == '__main__': import sys sys.exit(main(sys.argv)) 

    Просмотр GUI-искателя

    Руководство:

    1. Проверьте, установлен ли Python3 ( python -V ). Если нет, установите его.
    2. Сохраните вышеуказанную программу как, скажем, pyfind.py
    3. Сделать его исполняемым chmod 755 pyfind.py
    4. Выполните его с помощью ./pyfind.py
    5. Введите фильтр, нажмите Enter.
    6. Если вы измените путь, повторите 1 (можно избежать этого, используя сигнал из FileChooserButton, если он нужен)

    EDIT2

    Я не уверен, что происходит в вашем случае, но журнал говорит, что python3 не находит файл pyfind.py. Вы можете сделать файл непосредственно исполняемым:

    Измените первую строку кода на:

     #!/usr/local/bin/python3 

    Чтобы сделать вышеуказанный исполняемый файл, выполните (в окне терминала в каталоге, где находится pyfind.py):

     chmod 755 pyfind.py 

    Затем вы должны выполнить программу просто так (опять же, в терминале):

     ./pyfind.py 
    Linux и Unix - лучшая ОС в мире.