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?

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.


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.


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.