Du bist nicht angemeldet.

#1 17.08.2020 10:39:20

Andy@Arch
Mitglied

Problem mit find

Ich versuche gerade die Ausgabe von find in eine Textdatei umzuleiten.

find $1 -maxdepth 2 -type f -name '*mp3' -print0 -execdir /usr/bin/keyfinder-cli -n camelot {} \; |sed -e "s;$1;;g" -e 's;.mp3; -> ;g'  >> /tmp/test.txt 

Das Problem ist das ich am Ende ein nicht Druckbares Zeichen in jeder Zeile habe und Mousepad sich weigert die Datei zu öffnen, das Zeichen kommt von der -print0 Option nur wie bekomme ich es weg?

Offline

#2 17.08.2020 12:33:24

schard
Moderator

Re: Problem mit find

Ensthaft jetzt?

man find schrieb:

       -print0
              True; print the full file name on the standard output, followed by a null character (instead of the newline character that -print uses).  This allows file names that contain newlines or other types of white space to be
              correctly interpreted by programs that process the find output.  This option corresponds to the -0 option of xargs.

PS: https://stackoverflow.com/questions/239 … rs-in-unix

Offline

#3 17.08.2020 14:03:48

frostschutz
Mitglied

Re: Problem mit find

wild geraten anstelle von -print0 vielleicht `-printf "%P "` (inkl. Leerzeichen) und bei sed das `-e "s;$1;;g"` könnte dann evtl. auch weg

aber nicht 100% klar was die Intention hier ist, daher nur geraten

Online

#4 17.08.2020 14:08:18

schard
Moderator

Re: Problem mit find

Das -print0 wird wahrscheinlich für keyfinder-cli benötigt, wenn die Dateinamen Leerzeichen beinhalten.

Offline

#5 17.08.2020 14:17:58

frostschutz
Mitglied

Re: Problem mit find

keyfinder-cli sieht von dem print nichts, -exec ist keine pipe

die Ausgabe die in >> test.txt umgebogen wird, vermischt die Ausgabe von -print0 und die vom -exec Befehl.

Das ist schon ein wenig ungewöhnlich.

Online

#6 17.08.2020 14:33:51

schard
Moderator

Re: Problem mit find

Stimmt, es wird ja mit execdir aufgerufen und nicht per Pipe.
Dann macht es tatsächlich überhaupt keinen Sinn, -print0 zu verwenden.

Offline

#7 17.08.2020 14:51:55

Andy@Arch
Mitglied

Re: Problem mit find

Das  -print0 war nur um einen um den Zeilenumbruch zu verhindern, `-printf "%P "` funktioniert besser. Danke Schön

P.S.

schard schrieb:

Ensthaft jetzt?

ich frage immer ernsthaft und solange ich die manpage nicht in Deutsch finde muss ich dies auch tun.

Beitrag geändert von Andy@Arch (17.08.2020 14:54:23)

Offline

#8 17.08.2020 15:04:12

frostschutz
Mitglied

Re: Problem mit find

Vielleicht wäre die Intention klarer, wenn du ein eigenes kleines Shellscript dafür schreibst:

#!/bin/bash

for datei in "$@"
do
    key=$(keyfinder "$datei")
    echo "${datei%.mp3} -> ${key}"
done

und dieses dann auszuführen mit `find -name "*.mp3" -execdir eigenes-script.sh {} +` (ohne print sed)

oder gleich ganz ohne find mit `for datei in */*.mp3` ... oder sowas in der Art

nur so als Idee

Beitrag geändert von frostschutz (17.08.2020 15:06:39)

Online

Schnellantwort auf dieses Thema

Schreibe deinen Beitrag und versende ihn
Deine Antwort

Fußzeile des Forums