Ein üblicher Weg, Dinge mit ein paar Dateien zu tun, ist - und schlagen Sie mich nicht dafür:
for f in $(ls); do …
Um vor Dateien mit Leerzeichen oder anderen seltsamen Zeichen sicher zu sein, wäre ein naiver Weg:
find . -type f -print0 | while IFS= read -r -d '' file; …
Hier -d ''
steht kurz für das Einstellen des ASCII NUL wie in -d $'\0'
.
Aber warum ist das so? Warum sind ''
und $'\0'
das gleiche? Liegt das daran, dass die C-Wurzeln von Bash mit einer leeren Zeichenfolge immer nullterminiert sind?
for f in *
anstatt sie zu analysieren ls
.
for i in $(ls)
ist schrecklich dumm - ich schäme mich fast, dass ich es hier als schlechtes Beispiel verwendet habe.
find … -exec
Dateien anstelle von Schleifen verwenden, was in den meisten Fällen funktioniert, in denen Sie stattdessen eine solche for-Schleife verwenden würden. Hier find
kümmert sich alles um Sie.