Wie kann ich eine mit find gefundene Datei direkt an ein anderes Programm übergeben?
Code:
[sun@t440s ~]$ $(find . -name "persdict.dat") && nano $
bash: ./.thunderbird/euqlo5ud.default/persdict.dat: Keine Berechtigung
Das haut leider nicht hin.
kurz zur Klärung, warum der Fehler bei dir auftritt: mit
versuchst du die Ausgabe von find noch einmal auszuführen. Die erste gefundene Datei ist sicherlich
./.thunderbird/euqlo5ud.default/persdict.dat. Diese Datei auszuführen besitzt du aber keine Berechtigung. (Das ist ja auch nicht das was du willst...)
Das
wartet darauf, das das vorherige Programm den Exitcode "0" leifert. Das sagt soviel wie "alles in Ordnung bei mir, du kannst weitermachen". Wenn der Exitcode "0" geliefert wird, dann würde
nano ausgeführt werden.
Ich glaube mit der -exec Methode von @bubbabrod geht es auch nicht, ich lasse mich da aber gerne eines Besseren belehren.
Ich würde es nicht direkt, sondern über eine temporäre Datei lösen:
Code:
find ./ -name "persdict.dat" >> /tmp/nano.tmp && nano /tmp/nano.tmp
Hierbei wird die Ausgabe von find in die Datei /tmp/nano.tmp geschrieben (deren Name völlig nebensächlich ist...) und im Anschluss von nano geöffnet.
Ein direktes Pipen in nano ala:
Code:
find ./ -name "persidict.dat" | nano
geht bei mir nicht vollständig, da hängt er sich nach den ersten paar Zeilen auf, oder zumindest dauert es sehr lange. Ich weiß aber auch hier nicht, ob diese Art der Verwendung vorgesehen ist.