просмотреть файлы, возвращенные из команд оболочки

335
frans

Очень часто я grepи findчерез каталоги (обычно содержащие изображения) и мне приходится «визуально» проверять результат, прежде чем я смогу обработать результат (например, удаление, перемещение и т. Д.). Например:

find ./pictures -iname "*.jpg" -size +2M -not -path "*/holiday/*" path1/img_2345.jpg path1/img_2346.jpg path1/img_2347.jpg 

Затем я хотел бы быстро проверить, что стоит за именами файлов. Я знаю, что могу только displayих, но иногда мне нужно обрабатывать вывод нескольких сотен имен файлов, поэтому запуск одной команды каждый не вариант.

nautilus/ nemoи т. д. не вариант, потому что их возможности фильтра слишком ограничены (я бы очень хотел использовать findи grep)

Итак, теперь мой вопрос: есть ли способ комфортно использовать выходные данные произвольных инструментов командной строки в качестве входных данных для средства просмотра файлов / изображений?

Изменить: комментарии показывают, что я упустил некоторые детали, которые важны для меня:

  • Зритель должен работать с реальными файлами, а не с копиями или символическими ссылками (как, например gwenview, когда вы предоставляете файлы в командной строке). Причина в том, что я хотел бы иметь возможность удалять / переименовывать / перемещать файлы.

  • Вовлеченный зритель должен хранить информацию о структуре каталогов (по нескольким причинам)

    • работать с файлами становится сложно, когда у меня есть только имя
    • иногда имя файла не уникально
    • иногда имя каталога содержит важную информацию

Я начал реализовывать инструмент самостоятельно, но у меня возникло такое грязное чувство, что я изобретаю колесо ... по крайней мере, я могу лучше показать вам, о чем я говорю:

enter image description here

Очевидно, что в нижнем поле вы можете написать любую команду, имена файлов указаны в левом поле. Нажав на любой элемент списка, вы увидите его.

Я предполагаю, что эта функциональность уже может существовать как плагин для эмулятора терминала или файлового менеджера - но я не знаю ничего ..

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

Как проходит работа?

0
Вы пытались использовать что-то вроде `gwenview $ (find ./pictures -iname" * .jpg "-size + 2M -not -path" * / holiday / * ")`? Конечно, вы можете использовать другой просмотрщик вместо gwenview. Это просто идея. Вы можете заключить в кавычки `" "` выходные данные, чтобы управлять возможными пробелами, или фильтровать через awk. В общем случае не очень хорошая идея анализировать вывод ls ... но для быстрого решения это может сработать. Лучше сделать скрипт и создать серию символических ссылок во временном каталоге, который вы можете удалить, выходя из программы просмотра. Hastur 8 лет назад 1
@Hastur: я пробовал это, но у этого подхода есть два недостатка: он плохо масштабируется с большим количеством файлов, возвращаемых командой shell, и вы обычно теряете контекст каталога (нет способа работать с содержащимися каталогами и т. Д.) frans 8 лет назад 0
И, в частности, `gwenview` создаст папку, содержащую все файлы, предоставленные в командной строке - так что больше невозможно работать с этими файлами .. frans 8 лет назад 0
Попытайтесь быть более понятным: ваш вопрос был _ "Итак, теперь мой вопрос: есть ли способ комфортно использовать выходные данные произвольных инструментов командной строки в качестве входных данных для средства просмотра файлов / изображений?" _ __Таким образом `$ (... ) `__. Вы все еще можете копировать или изменять файлы. Если у вас есть конкретные потребности, вы должны сказать это, чтобы сэкономить время. Вы всегда можете воспроизвести это поведение с помощью скрипта и, например, сделать список `ln -s`, запустить программу просмотра, работать так, как хотите, выйти из программы просмотра, выполнить другие действия, чтобы удалить исходный файл, если ссылка отсутствует. больше не существует ... есть много других способов сделать все это с их задом. Hastur 8 лет назад 0
Вы совершенно правы - я просто не хотел ограничивать потенциальные ответы, описывая слишком точный рабочий процесс. Иногда я хочу просто просмотреть изображения, иногда я хочу оперировать ими (переименовывать, удалять, ..), иногда я хочу также просматривать файлы разных типов (текст, видео, ..). Ваш ответ был бы совершенно нормальным, если бы инструменты играли хорошо. Я постараюсь предоставить некоторые варианты использования! frans 8 лет назад 0
Используя find -exec или xarg, вы можете создать символическую ссылку на все файлы, удовлетворяющие условию, в каталог. Затем вы можете легко перейти в этот каталог и просматривать изображения практически с любым зрителем, который вам нравится, или даже с nautilus. Gombai Sándor 8 лет назад 1
Это то, что делает `gwenview`, когда вы указываете имена файлов в командной строке. Я добавил еще немного информации в свой вопрос, чтобы показать, почему это не работает для меня. frans 8 лет назад 0

0 ответов на вопрос

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