Unterschied zwischen ls und finden, um eine Schleife über Dateien in ein bash-script

Ich bin mir nicht sicher, ob ich verstehe genau, warum:

for f in `find . -name "strain_flame_00*.dat"`; do
   echo $f
   mybase=`basename $f .dat`
   echo $mybase
done

funktioniert und:

for f in `ls strain_flame_00*.dat`; do
   echo $f
   mybase=`basename $f .dat`
   echo $mybase
done

nicht, also das mit dem Namen nicht beraubt das suffix. Ich denke, es ist, weil, was dabei heraus kommt ls ist anders formatiert, aber ich bin mir nicht sicher. Ich selbst habe eval vor der ls...

Wenn alle Sie haben, ist eine einfache glob dann, warum würden Sie entweder?
Sicher, aber ich würde gerne verstehen, warum das unterschiedliche Verhalten...
Nie analysieren die Ausgabe von ls!
mywiki.wooledge.org/ParsingLs
Sie könnten auch verwenden find . -name "strain_flame_00*.dat" -exec basename "{}" .dat \; durchzuführen, einen Befehl auf den einzelnen abgestimmt-Datei

InformationsquelleAutor FrenchKheldar | 2012-12-11

Schreibe einen Kommentar