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

pgrep/pkill возьмите a -f флаг. От man страница:

-f    The pattern is normally only matched against the process name.
      When -f is set, the full command line is used.

Например:

$ sleep 30& sleep 60&
[1] 8007
[2] 8008

$ pkill -f 'sleep 30'
[1]  - terminated  sleep 30

$ pgrep sleep
8008
18
01.11.2012, 19:17
3 ответа

Да, в основном необходимо было бы предложить выбору БУФЕРА ОБМЕНА любого как

  • 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.

12
27.01.2020, 19:46
  • 1
    Хорошо, после некоторого лужения text/uri-list вариант работал на меня - я могу скопировать материал с командной строки и файлов вставки в файловый менеджер дельфина. Это даже не требует file:// префиксы, которые делают команду, чтобы хорошо работать с find. Я отредактировал Ваш вопрос добавить команду, которая работает на меня в KDE - кто-либо может протестировать его в Gnome или в другом месте? –  Sergey 02.11.2012, 00:33
  • 2
    Спасибо за редактирование. Это похоже file:// не необходимо с pcmanfm любой (хотя pcmanfm действительно включает его сам). Я предполагаю, что некоторые специальные символы (по крайней мере LF) должны быть закодированы URI все же. –  Stéphane Chazelas 02.11.2012, 00:47
  • 3
    Да. Я могу подтвердить, что необходимо использовать file:///new%0Aline для файлов, которые содержат символы новой строки, хотя любой другой символ (включая неASCII в любом кодировании), кажется, соглашается (с pcmanfm, по крайней мере) –  Stéphane Chazelas 02.11.2012, 00:57

почему не просто делают find это для Вас?

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

Править: от того, от чего я понимаю man xclip: это обрабатывает текст только, не файлы или каталоги.

1
27.01.2020, 19:46
  • 1
    Главным образом, потому что это - эксперимент, хотя я думаю "файлы копии к буферу обмена теперь, решаю, где Вы хотите вставить их позже", был бы полезный способ сделать вещи. –  Sergey 02.11.2012, 00:10

Основываясь на этих ответах, я написал filetoclipPython-скрипт, который копирует в буфер обмена файлы, указанные в командной строке.

По сути, все, что нужно, это абсолютизировать их и процентно -кодировать "странные" символы перед копированием в буфер обмена. Фактическая работа с буфером обмена делегирована xclip, так как работа с буфером обмена прямо из Python более болезненна, чем ожидалось.

#!/usr/bin/env python3
import os.path
import sys
from urllib.parse import quote
from subprocess import run
out = [os.fsencode('file://' + quote(os.path.abspath(x))) for x in sys.argv[1:]]
run(['xclip', '-i', '-selection', 'clipboard', '-t', 'text/uri-list'],
    input=b'\n'.join(out), check=True)
1
28.10.2021, 15:03

Теги

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