¿Cómo iterar a través de múltiples extensiones de archivo sin preocuparse por la sensibilidad a las mayúsculas y minúsculas?

0

He visto varios temas sobre cómo iterar a través de múltiples extensiones de archivo, pero en la mayoría de los casos, la lista está definida.

ejemplo:

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

Como se puede ver, los archivos .TXT se ignorarán. Y tristemente, el tipo que lo respondió dice que solo funciona para bash4. Mavericks está utilizando bash 3.x

¿Alguna idea sobre cómo se puede hacer en OS X?

    
pregunta mrjayviper 23.07.2014 - 06:47

1 respuesta

1

Use find :

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

Use IFS= read -r si las rutas pueden terminar con espacios o contener barras invertidas.

O instala bash 4:

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

Entonces:

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

shopt -s nocaseglob también funciona con bash 3.2.

    
respondido por el user495470 23.07.2014 - 15:32

Lea otras preguntas en las etiquetas