Копирование файлов из командной строки в буфер обмена

18

В файловом менеджере с графическим интерфейсом пользователя можно выбрать несколько файлов, нажать Ctrl-C (который предположительно копирует поступающую информацию о файлах в буфер обмена), затем перейти в другую папку и нажать Ctrl-V, которая затем скопирует файлы в этот файл. каталог.

В качестве эксперимента, после копирования файлов в файловый менеджер, можно переключиться в текстовый редактор - нажатие Ctrl-V вставляет список абсолютных имен файлов. Обратный процесс (копирование списка файлов из текстового редактора и вставка их в файловый менеджер) не работает, что предположительно связано с различными целевыми атомами

Цель этого упражнения - скопировать некоторые файлы из командной строки, например,

find ${PWD} -name "*.txt" | xclip <magic parameters>

затем переключитесь на файловый менеджер и скопируйте их все в каталог, используя File-> Paste.

Итак, вопрос в том, какие параметры xclip(или другую программу) мне нужно указать, чтобы файловый менеджер распознал выбор как список файлов и включил пункт меню «Вставить»?

В качестве альтернативы, есть ли инструмент низкого уровня, который позволил бы проверить содержание выбора X и посмотреть, какие данные он содержит в настоящее время?

Сергей
источник

Ответы:

12

Да, в принципе, вам нужно будет предложить выбор CLIPBOARD либо как

  • text/uri-list с содержанием

    /path/to/file1
    /path/to/file2
    
  • application/x-kde-cutselectionили x-special/gnome-copied-filesс содержанием copy\nfile://$path1\nfile://$path2\0илиcut\nfile://$path1\nfile://$path2...\0

С этим xclipможно добиться чего-то вроде

find "$PWD" -name "*.pdf"| xclip -i -selection clipboard -t text/uri-list

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

Вы также должны быть в состоянии реализовать это в несколько строк perl-tk.

Стефан Шазелас
источник
Хорошо, после некоторой переделки text/uri-listвариант работал для меня - я могу скопировать материал из командной строки и вставить файлы в файловый менеджер Dolphin. Он даже не требует file://префиксов, которые заставляют команду нормально работать find. Я отредактировал ваш вопрос, чтобы добавить команду, которая работает для меня в KDE - кто-нибудь может протестировать ее в Gnome или где-либо еще?
Сергей
Спасибо за редактирование. Похоже, что file://нет необходимости pcmanfmни с одним (хотя pcmanfm включает его сам). Я предполагаю, что некоторые специальные символы (по крайней мере LF) должны быть закодированы URI.
Стефан Шазелас
Да. Я могу подтвердить, что вам нужно использовать file:///new%0Alineфайлы, содержащие символы новой строки, хотя любой другой символ (включая не ASCII в любой кодировке), кажется, в порядке (по крайней мере, с pcmanfm)
Стефан Шазелас
1

почему бы просто не сделать findэто для вас?

find ${PWD} -name "*.txt" -exec cp {} /full/path \; && gnome-open /full/path &

РЕДАКТИРОВАТЬ: из того, что я понимаю man xclip: он обрабатывает только текст, а не файлы или каталоги.

h3rrmiller
источник
Главным образом потому, что это эксперимент, хотя я думаю, что «копировать файлы в буфер обмена сейчас, решите, куда вы хотите вставить их позже», было бы полезным способом сделать что-то.
Сергей