Copie de fichiers de la ligne de commande dans le presse-papiers

18

Dans un gestionnaire de fichiers GUI, il est possible de sélectionner quelques fichiers, appuyez sur Ctrl-C (qui censément copie les informations sur les fichiers dans le presse-papiers), puis accédez à un autre dossier et appuyez sur Ctrl-V, qui copiera ensuite les fichiers dans ce annuaire.

À titre expérimental, après avoir copié des fichiers dans le gestionnaire de fichiers, il est possible de passer à un éditeur de texte - en appuyant sur Ctrl-V, il colle une liste de noms de fichiers absolus. Le processus inverse (copier une liste de fichiers à partir d'un éditeur de texte et les coller dans un gestionnaire de fichiers) ne fonctionne pas, ce qui est censé être dû à différents atomes cibles

Le but de l'exercice est de pouvoir copier certains fichiers depuis la ligne de commande, par exemple

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

puis basculez vers un gestionnaire de fichiers et copiez-les tous dans un répertoire en utilisant Fichier-> Coller.

Donc, la question est: quels paramètres xclip(ou autre programme) dois-je spécifier pour que le gestionnaire de fichiers reconnaisse la sélection comme une liste de fichiers et active son élément de menu Coller?

Alternativement, existe-t-il un outil de bas niveau qui permettrait d'inspecter le contenu de la sélection X et de voir quelles données il contient actuellement?

Sergey
la source

Réponses:

12

Oui, en gros, vous devez proposer la sélection CLIPBOARD soit comme

  • text/uri-list avec le contenu étant

    /path/to/file1
    /path/to/file2
    
  • application/x-kde-cutselectionou x-special/gnome-copied-filesavec du contenu copy\nfile://$path1\nfile://$path2\0oucut\nfile://$path1\nfile://$path2...\0

Avec xclipvous pouvez y parvenir avec quelque chose comme

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

Je l' ai aussi trouvé cette loliclip commande qui semblait prometteur, mais si je pouvais récupérer les valeurs, je ne pouvais pas les stocker et de les récupérer à partir loliclipde pcmanfmsuccès.

Vous devriez également pouvoir l'implémenter en quelques lignes de perl-tk.

Stéphane Chazelas
la source
Ok, après quelques modifications, la text/uri-listvariante a fonctionné pour moi - je suis en mesure de copier des éléments de la ligne de commande et de coller des fichiers dans le gestionnaire de fichiers Dolphin. Il n'a même pas besoin de file://préfixes, ce qui permet à la commande de fonctionner correctement find. J'ai édité votre question pour ajouter la commande qui fonctionne pour moi dans KDE - quelqu'un peut-il la tester dans Gnome ou ailleurs?
Sergey
Merci pour l'édition. Il semble que ce file://ne soit pas nécessaire non pcmanfmplus (bien que pcmanfm l'inclue lui-même). Je suppose que certains caractères spéciaux (au moins LF) devraient être encodés en URI.
Stéphane Chazelas
Oui. Je peux confirmer que vous devez utiliser file:///new%0Alinepour les fichiers qui contiennent des caractères de nouvelle ligne, bien que tout autre caractère (y compris non-ASCII dans n'importe quel encodage) semble bien (avec pcmanfm au moins)
Stéphane Chazelas
1

pourquoi ne pas simplement le faire findpour vous?

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

EDIT: d'après ce que je comprends man xclip: il gère uniquement le texte, pas les fichiers ou les répertoires.

h3rrmiller
la source
Principalement parce que c'est une expérience, bien que je pense que "copier les fichiers dans le presse-papiers maintenant, décider où vous voulez les coller plus tard" serait un moyen utile de faire les choses.
Sergey