Kopieren von Dateien von der Kommandozeile in die Zwischenablage

18

In einem GUI-Dateimanager ist es möglich, einige Dateien auszuwählen, STRG-C zu drücken (was angeblich die Informationen über die Dateien in die Zwischenablage kopiert), dann zu einem anderen Ordner zu navigieren und STRG-V zu drücken, wodurch die Dateien in diesen kopiert werden Verzeichnis.

Experimentell kann nach dem Kopieren von Dateien im Dateimanager in einen Texteditor gewechselt werden. Durch Drücken von Strg-V wird eine Liste der absoluten Dateinamen eingefügt. Der umgekehrte Vorgang (Kopieren einer Liste von Dateien aus einem Texteditor und Einfügen in einen Dateimanager) funktioniert nicht, was vermutlich auf unterschiedliche Zielatome zurückzuführen ist

Ziel der Übung ist es, beispielsweise einige Dateien von der Kommandozeile kopieren zu können

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

Wechseln Sie dann zu einem Dateimanager und kopieren Sie sie alle mit Datei-> Einfügen in ein Verzeichnis.

Die Frage ist also: Welche Parameter von xclip (oder ein anderes Programm) muss ich angeben, damit der Dateimanager die Auswahl als Dateiliste erkennt und den Menüpunkt Einfügen aktiviert?

Alternativ gibt es ein einfaches Tool, mit dem Sie den Inhalt der X-Auswahl überprüfen und feststellen können, welche Daten aktuell enthalten sind.

Sergey
quelle

Antworten:

12

Ja, im Grunde müssten Sie die CLIPBOARD-Auswahl entweder als anbieten

  • text/uri-list mit dem Inhalt zu sein

    /path/to/file1
    /path/to/file2
    
  • application/x-kde-cutselectionoder x-special/gnome-copied-filesmit Inhalt copy\nfile://$path1\nfile://$path2\0odercut\nfile://$path1\nfile://$path2...\0

Mit können xclipSie dies mit so etwas erreichen

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

Ich habe auch diesen Loliclip- Befehl gefunden, der vielversprechend aussah, aber obwohl ich die Werte abrufen konnte, war ich nicht in der Lage, sie zu speichern und sie loliclipvon pcmanfmerfolgreich abrufen zu lassen .

Sie sollten es auch in ein paar Zeilen implementieren können perl-tk.

Stéphane Chazelas
quelle
Ok, nach einigem Basteln hat die text/uri-listVariante für mich funktioniert - ich kann Sachen von der Kommandozeile kopieren und Dateien in den Dolphin-Dateimanager einfügen. Es werden nicht einmal file://Präfixe benötigt, mit denen der Befehl einwandfrei funktioniert find. Ich habe Ihre Frage bearbeitet, um den Befehl hinzuzufügen, der in KDE für mich funktioniert. Kann jemand ihn in Gnome oder anderswo testen?
Sergey
Danke für die Bearbeitung. Es sieht so aus, als ob das file://bei pcmanfmbeiden nicht notwendig ist (obwohl pcmanfm es selbst beinhaltet). Ich nehme an, dass einige Sonderzeichen (zumindest LF) URI-codiert sein sollten.
Stéphane Chazelas
Ja. Ich kann bestätigen, dass Sie file:///new%0Alinefür Dateien, die ein Newline-Zeichen enthalten, verwenden müssen, obwohl jedes andere Zeichen (einschließlich Nicht-ASCII in jeder Codierung) in Ordnung zu sein scheint (zumindest mit pcmanfm)
Stéphane Chazelas
1

warum machst finddu es nicht einfach für dich?

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

BEARBEITEN: von was ich verstehe von man xclip: es behandelt nur Text, nicht Dateien oder Verzeichnisse.

h3rrmiller
quelle
Meistens, weil es ein Experiment ist, obwohl ich denke, dass das "Kopieren von Dateien in die Zwischenablage jetzt, entscheiden, wo Sie sie später einfügen möchten" eine nützliche Möglichkeit wäre, Dinge zu tun.
Sergey