Come eseguire iterazioni su più estensioni di file senza preoccuparsi della distinzione tra maiuscole e minuscole?

0

Ho visto vari argomenti su come iterare attraverso più estensioni di file, ma nella maggior parte dei casi l'elenco è definito.

esempio:

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

Come si può vedere, i file .TXT verrebbero ignorati. E purtroppo, il ragazzo che ha risposto dice che funziona solo per bash4. Mavericks usa bash 3.x

Qualche idea su come può essere fatto su OS X?

    
posta mrjayviper 23.07.2014 - 06:47
fonte

1 risposta

1

Utilizza find :

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

Utilizza IFS= read -r se i percorsi possono terminare con spazi o contenere barre retroverse.

O installa bash 4:

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

Quindi:

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

shopt -s nocaseglob funziona anche con bash 3.2.

    
risposta data 23.07.2014 - 15:32
fonte

Leggi altre domande sui tag