Je souhaite renommer un fichier nommé d'une manière énumérée. Mon approche précédente était d'utiliser cette ligne de commande:Comportement différent lors de l'exécution de ls à partir d'un script
FILES=`ls "someDir/"`; for f in $FILES; do echo "Processing file: $f"; done;
Echoing
le nom du fichier est uniquement à des fins de démonstration. Le produit ci-dessus la sortie attendue:
Processing file: File1
Processing file: File2
Processing file: File3
...
Cependant quand je lance (ce que je pensais est la même chose) le script ci-dessous, il traite toute sortie ls
comme un seul fichier et produit cette sortie:
SCRIPT:
#!/bin/bash
FILES=`ls "someDir/"`
for f in $FILES
do
echo "Processing file: $f"
done
OUTPUT:
Processing file: File1
File2
File3
...
Je n'arrive pas à comprendre. Aussi, je ne suis même pas sûr que ce soit ls
qui produit ce comportement. Quel est l'origine de ce comportement? Et pourquoi?
Existe-t-il un moyen de dire 'find' pour garder l'ordre réel des fichiers? Puisque j'ai besoin qu'ils soient traités dans l'ordre dans lequel ils sont nommés. Donc 'File1' d'abord, puis' File2' et ainsi de suite. Mais 'find' produit une sortie ordonnée manquante comme' File325', 'File3',' File20', .... – muXXmit2X