
Ich versuche, die Find-Ausgabe folgendermaßen in einer Variablen zu speichern:
a=find /Users/Downloads/DTI_allsites/subprojects/*/UII_0077 -name "dti_preprocessed" -type d
Ich erhalte jedoch ständig die folgende Meldung:
-bash:
/Users/Downloads/DTI_allsites/subprojects/UII_B/UII_0077: ist ein Verzeichnis
immer wenn ich versuche, den Befehl zu verwenden, gebe ich den Pfad mit folgendem Befehl wieder:
echo $a
Ich bekomme nichts in der Variable gespeichert. Wie kann ich das beheben?
Antwort1
Da find
eine Liste von Dateipfaden zurückgegeben wird, sollten Sie eine Array-Variable verwenden. Da ein Dateipfad jedes beliebige Zeichen außer NUL enthalten kann, sollten Sie -print0
das Ergebnis verwenden und auf NUL aufteilen.
Mit bash4.4
+:
readarray -td '' list < <(find ... -print0)
so-something-with "${list[@]}"