0 votos

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

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 serían ignorados. Y lamentablemente, el que respondió dice que solo funciona para bash4. Mavericks está utilizando bash 3.x

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

1voto

Utilice find:

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

Utilice IFS= read -r si los caminos pueden terminar con espacios o contener barras invertidas.

O instale bash 4:

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

Luego:

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

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

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X