(Mit PCManFM ungelöst nur mit SpaceFM) cp dateinamen mit leerzeichen und pcmanfm

Du hast Probleme mit Deinem eMail-Programm, Webbrowser oder Textprogramm? Dein Lieblingsprogramm streikt?
Antworten
Benutzeravatar
Revod
Beiträge: 3788
Registriert: 20.06.2011 15:04:29
Lizenz eigener Beiträge: MIT Lizenz

(Mit PCManFM ungelöst nur mit SpaceFM) cp dateinamen mit leerzeichen und pcmanfm

Beitrag von Revod » 20.05.2019 15:51:48

Hallo Leute

Ich möchte, je nach Auswahl einen, zwei oder drei ... Bilder ( Bildformat sollte keine Rolle spielen, png, xpm usw. ) aus einen xy Ordner mit cp durch Rechtsklick aus dem Dateimanager direkt im Ordner $HOME/Pictures/picturestmp rein kopieren um danach eine zweite Aufgabe mit diesen Bilder auszuführen. Das alles habe ich soweit prima hinbekommen mit cp %F $HOME/Pictures/picturestmp und Scripte, sofern die Dateinamen keine Leerzeichen beinhalten.

Wenn ich

Code: Alles auswählen

cp ./*.png %F
versuche = keine Reaktion aus Rechtsklick aktion.desktop, wenn ich %F stehen lasse.

Mit

Code: Alles auswählen

cp ./*.png
kopiert cp alle PNG's im Ordner $HOME/Pictures/picturestmp, was ich nicht will.

Habe viele Varianten versucht, die ich im Internet gefunden habe ( Habe bereits " alles " abgesucht ), leider ohne Erfolg und weiss nun nicht weiter.

Ich möchte einfach nicht, dass es nur mit " küchentisch.png " klappt, sondern auch mit " mein küchentisch.png, mein kleid.png, schuh.png " klappt, wenn ich eine oder zwei, oder alle drei png Dateien mit der Maus markiere und alle andere xy1.png, xy2.png usw. aus xy Ordner nicht im Ordner $HOME/Pictures/picturestmp rein kopiert werden dürfen.

Mit cp --help konnte ich nichts passendes finden und cp -p verlangt das Argument des Datei Typ, eben " *.png "

Gibt es eine einfache Lösung und wie würde sie aussehen? Oder kann " cp " was mein Anliegen betrifft schlicht nicht in Zusammenarbeit mit einen Dateimanager so flexibel ausführen?

Ordnerauswahl mit Zenity ist kein Problem, doch das möchte ich nicht, zu viele Klicks. :)
Zuletzt geändert von Revod am 22.05.2019 16:24:55, insgesamt 1-mal geändert.
Systemd und PulseAudio, hmmm, nein danke.

Benutzeravatar
heinz
Beiträge: 535
Registriert: 20.12.2007 01:43:49

Re: cp dateinamen mit leerzeichen und pcmanfm

Beitrag von heinz » 20.05.2019 20:42:25

Hallo Revod,

leider habe ich keine Ahnung von pcmanfm aber ich gehe mal davon aus das %F durch die Dateinamen die Du im Dateimanager ausgewaehlt hast ersetzt wird.
Wenn in den Dateinamen dann Leerzeichen sind wie z.B. in "mein kleid.png" sieht cp 2 Dateien statt einer.
Die Erste lautet "mein", die Zweite "kleid.png".

Ich wuerde es mal mit einem Script versuchen, welches %F einliest und anzeigt.
z.B.

Code: Alles auswählen

while test -n "$1"
do
  echo "$1"
  shift
done
Und dieses dann mit script.sh %F aus Deinem Dateimanager starten um zu sehen was da uebergeben wird.

Gruss, heinz

Benutzeravatar
Revod
Beiträge: 3788
Registriert: 20.06.2011 15:04:29
Lizenz eigener Beiträge: MIT Lizenz

Re: cp dateinamen mit leerzeichen und pcmanfm

Beitrag von Revod » 20.05.2019 22:02:47

Hallo heinz, danke für die rasche Antwort. Bitte verzeih wenn ich etwas unklar war.
heinz hat geschrieben: ↑ zum Beitrag ↑
20.05.2019 20:42:25
leider habe ich keine Ahnung von pcmanfm aber ich gehe mal davon aus das %F durch die Dateinamen die Du im Dateimanager ausgewaehlt hast ersetzt wird.
...
Mit %F wird eine oder mehrere xy Datei/en, egal welcher Namen und Endung sie haben am Programm xy übergeben um es / sie zu verarbeiten. Das Programm kann sich auch in einen Script befinden ( Zum Beispiel cp *,png $HOME/Pictures/picturestmp | zenity --progress ... )

Einen aktion.desktop in PCManFM ist kein ausführender, wie /usr/share/applications/gimp.desktop Starter von Programme und löst mit einen Rechtsklick, z. B. xy.png aufgerufen und mit Linksklick eine Aktion xy ausgelöst ( Die Aktion und Starter xy.desktop sehen nur ähnlich aus und in der Benennung sind sie gleich. Ausser in der action.desktop Datei programm+aktion des jeweiligen Programm sich befinden muss, oder richtig wie Du sagst einen Script mit programm+aktion ausführen soll ).

Die Befehlszeile(n):

Code: Alles auswählen

[Desktop Entry]
Type=Action
Name=PNG/s to SVG/s
Name[de]=PNG/s zu SVG/s
Comment=Graphics single or batch conversion
Comment[de]=Graphiken einzel oder Stapel Konvertierung
Icon=lxconvertor

Profiles=image_png;

[X-Action-Profile image_png]
MimeTypes=image/png;
Exec=bash -c '/usr/local/share/pcmanfmaction/lxfmimgconverter/makedirs ; cp %F $HOME/Pictures/picturestmp ; /usr/local/share/pcmanfmaction/lxfmimgconverter/pngsto/pngstosvgsfm1'
Die Datei im lxde Desktop wird dann in ~/.local/share/file-manager/actions rein kopiert, damit sie im Menü des Rechtsklick in PCManFM erscheint ( Andere Dateimanger haben " Aktion hinzufügen " PCManFM ist der zwingende Dateimanager von lxde ).

Nun, diese Aktion im " Code " funktioniert einwandfrei mit " schuh.png " und auch die weiteren Konvertierung Aktionen des Script " pngstosvgsfm1 " ( Bin bereits seit 3 Tagen am testen und die " 1 " am Ende ist als Test Dateiname Zweck, ohne die Funktionierende durch mich selber zu vermasseln ). :)

Mit " mein schuh.png " eben nicht. Richtig, dass cp Leerzeichen als mehrere Dateien ansieht habe ich auch bemerkt ( Oder die Übergabe von %F an cp wird nur mit Leerzeichen nicht akzeptiert ).

Doch mit

cp *.png $HOME/Pictures/picturestmp

erkennt cp die Leerzeichen im Namen und auch die konvertierte Ausgaben stimmen 100 pro, nur eben, dann kopiert es alle " 100 - 1000 " xy.png, xy1 xy.png im Ordner $HOME/Pictures/picturestmp und nicht nur die eine - zwei - drei ausgewählte xy.png/s aus dem Dateimanager.

%F in der Exec Zeile = auch die genaue Auswahl von Dateien ( %d - %D steht für Ordner )

Ok soweit, nun wenn ich " *.png %F " befehle geht nichts, was mich auch logisch erscheint, weil PCManFM nun nicht weiss ob ich nur die ausgewählte oder alle will.

Ich bin überhaupt kein Programmierer und muss alles im Netz suchen und mir am Ende das Gesamte Code mit den gefundenen gültigen Sequenzen und Zeichen selber zusammen (aus)tüfteln - um schreiben , daher nehme ich an, dass wenn cp mit dem Asterix Leerzeichen lesen kann, dann kann cp Leerzeichen lesen, ansonsten würde das kopieren von " mein schuh.png " ausgelassen werden.

Und daher nehme ich weiter an, dass es doch eine Möglichkeit geben sollte mit %F plus *.png :roll:

Aus meiner Erfahrung der letzten 3 Tage nehme ich auch an, dass alles das ziemlich kompliziert werden könnte was ich nicht hoffen will ( mit find und regex und file ), weil alle cp Befehle ich nur mit datei.xy oder meine_datei.xy im grossen www gefunden habe, also alle ohne Leerzeichen.
Systemd und PulseAudio, hmmm, nein danke.

Benutzeravatar
heinz
Beiträge: 535
Registriert: 20.12.2007 01:43:49

Re: cp dateinamen mit leerzeichen und pcmanfm

Beitrag von heinz » 20.05.2019 22:56:56

Revod hat geschrieben: ↑ zum Beitrag ↑
20.05.2019 22:02:47
Doch mit
cp *.png $HOME/Pictures/picturestmp
erkennt cp die Leerzeichen im Namen
Mit dem * werden die Dateinamen korrekt an cp uebergeben weil der * zuerst von der bash in die Dateinamen "uebersetzt" wird.
Erst dann wird cp gestartet, mit den Dateinamen hinten dran.
Wenn Du cp %F zielpfad/ verwendest macht die bash nichts dergleichen.

Teste es:
Datei >mein kleid.png<

cp * zielpfad/
Funktioniert.

cp mein kleid.png zielpfad/
Funktioniert nicht

cp mein\ kleid.png zielpfad/
Funktioniert.

cp "mein kleid.png" zielpfad/
Funktioniert.

Wenn %F angegeben ist und in den Dateinamen leerzeichen sind, wird es nicht gehen.

Du koenntest Dir auch mal alle Meldungen von cp ausgeben lassen, in eine log-datei.
z.B. mit: (Ungetestet)

Code: Alles auswählen

cp -v %F $HOME/Pictures/picturestmp >$HOME/log.txt 2>&1

Benutzeravatar
Revod
Beiträge: 3788
Registriert: 20.06.2011 15:04:29
Lizenz eigener Beiträge: MIT Lizenz

Re: cp dateinamen mit leerzeichen und pcmanfm

Beitrag von Revod » 20.05.2019 23:22:41

Klar, das alles habe ich auch im www gefunden.... und mit Namen Eingaben alles kein Problem :)

Nuur, wie bei " unbekannte namen.png " ...

Soeben getestet my schuh.png, weder Datei noch log Ausgaben. Und nun muss ich was essen, danke erst Mal. :THX:

Morgen ist auch noch ein Tag, dann gucke ich weiter.
Systemd und PulseAudio, hmmm, nein danke.

Benutzeravatar
Revod
Beiträge: 3788
Registriert: 20.06.2011 15:04:29
Lizenz eigener Beiträge: MIT Lizenz

Re: cp dateinamen mit leerzeichen und pcmanfm

Beitrag von Revod » 21.05.2019 10:16:21

heinz hat geschrieben: ↑ zum Beitrag ↑
20.05.2019 22:56:56
Revod hat geschrieben: ↑ zum Beitrag ↑
20.05.2019 22:02:47
Doch mit
cp *.png $HOME/Pictures/picturestmp
erkennt cp die Leerzeichen im Namen
Mit dem * werden die Dateinamen korrekt an cp uebergeben weil der * zuerst von der bash in die Dateinamen "uebersetzt" wird.
Erst dann wird cp gestartet, mit den Dateinamen hinten dran.
Wenn Du cp %F zielpfad/ verwendest macht die bash nichts dergleichen.
...
Das hat mich auf eine Idee gebracht das Asterix weg zu lassen und mit

Code: Alles auswählen

set -x ; for f_png in ${png%.png} ; do f="${f_png%.png}" ; cp "$f_png" $HOME/Pictures/picturestmp/  ; done
Habe for f_png in *.png durch for f_png in ${png%.png} ersetzt und die Zeile von " convert " für " cp " angepasst, bis das Terminal keine Fehler mehr ausgab.

Nun werden keine Fehler ausgegeben, doch die xy.png Datei wird nicht in das gewünschte Ordner rein kopiert.

Gäbe es mit der obige Befehlszeile eine Lösung cp dazu zu bewegen Namen mit Leerzeichen nicht entweder keiner oder alle auszuführen?

Ich vermute da fehlt noch was vor dem for f_png in " hier? ${png%.png} " wovon ich keine Ahnung habe.

Wenn ja, dann wäre die Zeile ohne Probleme im Hauptscript einzubinden und die gesamte Zeile von cp im " action.desktop " wegzulassen und am Ende von .../pngstosvgsfm1 das %F zu setzen. Eine einzelne Zeile wäre sehr gut, weil wenn das %F aus PCManFM sich der Übergabe aus Ort xy weigern sollte aus jedes Ordner xy.png im ~/picturestmp rein zu kopieren was ich auch schon erlebt habe, daher die Einbindung von cp in Aktion Datei. So könnte ich die Zeile in der Aktion Datei wieder implementieren.
Systemd und PulseAudio, hmmm, nein danke.

Benutzeravatar
Revod
Beiträge: 3788
Registriert: 20.06.2011 15:04:29
Lizenz eigener Beiträge: MIT Lizenz

Re: cp dateinamen mit leerzeichen und pcmanfm

Beitrag von Revod » 22.05.2019 10:53:47

Will meinen " Glück " noch im PCLinuxOS Forum versuchen.
Systemd und PulseAudio, hmmm, nein danke.

Benutzeravatar
Revod
Beiträge: 3788
Registriert: 20.06.2011 15:04:29
Lizenz eigener Beiträge: MIT Lizenz

Re: cp dateinamen mit leerzeichen und pcmanfm

Beitrag von Revod » 22.05.2019 16:23:36

Teilweise gelöst, doch nicht mit PCManFM, siehe

https://www.pclinuxos.com/forum/index.p ... 7.html#new

alles deepl übersetzt
Systemd und PulseAudio, hmmm, nein danke.

willy4711

Re: (Mit PCManFM ungelöst nur mit SpaceFM) cp dateinamen mit leerzeichen und pcmanfm

Beitrag von willy4711 » 22.05.2019 17:17:49

Ich weiß nicht, ob dir das weiterhilft, da ich das gerade in Thunar getestet habe

Code: Alles auswählen

cp %N /home/willy/test
Funktioniert aus Thunar heraus mit allem und jedem.

Die dazu gehörige Passage aus der ~/.config/Thunar/uca.xml (nur zu Info, das das bei dir bestimmt anders ist)

Code: Alles auswählen

<action>
	<icon>copy</icon>
	<name>Nach Test kopieren</name>
	<unique-id>1558537542333318-1</unique-id>
	<command>cp %N /home/willy/test</command>
	<description></description>
	<patterns>*</patterns>
	<audio-files/>
	<image-files/>
	<other-files/>
	<text-files/>
	<video-files/>
</action>
Und zum Schluss noch ein Bildchen, mit den in Thunar möglichen Operanden:
2126

Benutzeravatar
Revod
Beiträge: 3788
Registriert: 20.06.2011 15:04:29
Lizenz eigener Beiträge: MIT Lizenz

Re: (Mit PCManFM ungelöst nur mit SpaceFM) cp dateinamen mit leerzeichen und pcmanfm

Beitrag von Revod » 22.05.2019 19:15:15

Mit %N wird der Name übergeben und nicht die Datei. SpaceFM bietet dieses Argument auch, allerdings da gibst Du mir die Idee auch mit PCManFM zu testen, letzteres bietet es nur %F - %f und %d - %D an und daher nicht daran gedacht, werde es testen. Ist eine Idee, danke.
Systemd und PulseAudio, hmmm, nein danke.

Benutzeravatar
Revod
Beiträge: 3788
Registriert: 20.06.2011 15:04:29
Lizenz eigener Beiträge: MIT Lizenz

Re: (Mit PCManFM ungelöst nur mit SpaceFM) cp dateinamen mit leerzeichen und pcmanfm

Beitrag von Revod » 22.05.2019 21:23:05

Getestet und geht gar nichts mit %N, weil wie gesagt PCManFM dieses Übergabe Argument nicht unterstützt. :)
Systemd und PulseAudio, hmmm, nein danke.

Antworten