Copiar archivos de la línea de comando al portapapeles

18

En un administrador de archivos GUI es posible seleccionar algunos archivos, presione Ctrl-C (que supuestamente copia la información sobre los archivos al portapapeles), luego navegue a otra carpeta y presione Ctrl-V, que luego copiará los archivos en ese directorio.

Como experimento, después de copiar archivos en el administrador de archivos, es posible cambiar a un editor de texto, presionando Ctrl-V allí pega una lista de nombres de archivos absolutos. El proceso inverso (copiar una lista de archivos de un editor de texto y pegarlos en un administrador de archivos) no funciona, lo que supuestamente se debe a diferentes átomos objetivo

El objetivo del ejercicio es poder copiar algunos archivos desde la línea de comandos, por ejemplo

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

luego cambie a un administrador de archivos y cópielos a un directorio usando Archivo-> Pegar.

Entonces, la pregunta es: ¿Qué parámetros de xclip(u otro programa) necesito especificar para que el administrador de archivos reconozca la selección como una lista de archivos y habilite su elemento de menú Pegar?

Alternativamente, ¿existe una herramienta de bajo nivel que permita inspeccionar el contenido de la selección X y ver qué datos contiene actualmente?

Sergey
fuente

Respuestas:

12

Sí, básicamente, deberías ofrecer la selección de CLIPBOARD como

  • text/uri-list con el contenido siendo

    /path/to/file1
    /path/to/file2
    
  • application/x-kde-cutselectiono x-special/gnome-copied-filescon contenido copy\nfile://$path1\nfile://$path2\0ocut\nfile://$path1\nfile://$path2...\0

Con xclipusted puede lograr esto con algo como

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

También encontré este comando loliclip que parecía prometedor, pero aunque pude recuperar los valores, no pude almacenarlos y recuperarlos loliclipcon pcmanfméxito.

También debería poder implementarlo en unas pocas líneas de perl-tk.

Stéphane Chazelas
fuente
Ok, después de algunos retoques, la text/uri-listvariante funcionó para mí: puedo copiar cosas de la línea de comandos y pegar archivos en el administrador de archivos Dolphin. Ni siquiera requiere file://prefijos, lo que hace que el comando funcione bien find. Edité su pregunta para agregar el comando que funciona para mí en KDE. ¿Alguien puede probarlo en Gnome o en otro lugar?
Sergey
Gracias por la edición Parece que file://tampoco es necesario pcmanfm(aunque pcmanfm sí lo incluye). Sin embargo, supongo que algunos caracteres especiales (al menos LF) deberían estar codificados con URI.
Stéphane Chazelas
Si. Puedo confirmar que necesita usar file:///new%0Alinepara archivos que contienen caracteres de nueva línea, aunque cualquier otro carácter (incluidos los que no son ASCII en cualquier codificación) parece estar bien (con pcmanfm al menos)
Stéphane Chazelas
1

¿Por qué no hacer findque lo haga por usted?

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

EDITAR: por lo que entiendo man xclip: maneja solo texto, no archivos o directorios.

h3rrmiller
fuente
Principalmente porque es un experimento, aunque creo que "copiar archivos al portapapeles ahora, decidir dónde desea pegarlos más tarde" sería una forma útil de hacer las cosas.
Sergey