Pourquoi ne pas mettre IFS sur une nouvelle ligne, puis capturer la sortie de ls
dans un tableau ? Le fait de définir IFS sur newline devrait résoudre les problèmes liés aux caractères bizarres dans les noms de fichiers ; l'utilisation de ls
peut être intéressant car il dispose d'une fonction de tri intégrée.
(Lors des tests, j'ai eu des difficultés à régler l'IFS sur \n
mais le paramétrer en newline backspace fonctionne, comme suggéré ailleurs ici) :
Par exemple, (en supposant que l'on souhaite ls
modèle de recherche passé dans $1
):
SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
FILES=($(/bin/ls "$1"))
for AFILE in ${FILES[@]}
do
... do something with a file ...
done
IFS=$SAVEIFS
Ceci est particulièrement pratique sous OS X, par exemple, pour capturer une liste de fichiers triés par date de création (du plus ancien au plus récent), la commande ls
La commande est ls -t -U -r
.