0 votes

Comment passer d'une extension de fichier à l'autre sans tenir compte de la sensibilité à la casse ?

J'ai vu plusieurs sujets sur la façon d'itérer à travers plusieurs extensions de fichiers, mais dans la plupart des cas, la liste est définie.

exemple :

for file in ${arg}/**/*.{txt,h,py}
do
    ....
done

Comme on peut le voir, les fichiers .TXT sont ignorés. Et malheureusement, le gars qui a répondu à la question dit que cela ne fonctionne que pour bash4. Mavericks utilise bash 3.x

Des idées sur la façon de procéder sous OS X ?

1voto

Utilisation find :

find "$arg" -iname \*.txt -o -iname \*.h -o -iname \*.py|while read f;do :;done

Utilisation IFS= read -r si les chemins peuvent se terminer par des espaces ou contenir des barres obliques inverses.

Ou installez bash 4 :

brew install bash;echo /usr/local/bin/bash|sudo tee -a /etc/shells;chsh -s /usr/local/bin/bash

Ensuite :

 shopt -s globstar nocaseglob;for f in "$arg"/**/*.{txt,h,py};do :;done

shopt -s nocaseglob fonctionne également avec bash 3.2.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X