Como posso executar o script para todos os diretórios?

0

Suponha que eu esteja no diretório principal que contém script.sh e subdiretórios, cada um dos subdiretórios contém imagens.
O script.sh é um script para redimensionar imagens. Eu quero aplicar este script para todos os subdiretórios, então depois de procurar por solução eu criei outro script que é

SAVEIFS=$IFS #Since the subdirectories contain whitespaces in their name
IFS=$(echo -en "\n\b")
for d in ./*; do
  if [ -d "$d" ]; then
    echo "$d" && cp ./script.sh ./$d/script.sh && cd "$d" && exec sh ./script.sh && cd ..
  fi
done
IFS=$SAVEIFS

O problema é que este script pára depois que é feito no primeiro subdiretório. Como posso executá-lo para todos os subdiretórios? Ou existe uma maneira melhor de fazer o script.sh ser executado em todos os subdiretórios?

    
por PorteM 14.03.2018 / 04:01

1 resposta

0

find para o resgate!

CURDIR='pwd'
IFS=$'\n'
for d in $(find . -type d); 
do 
    cd $CURDIR/"$d"
    $CURDIR/script.sh
done

Ainda melhor ... retire o material "todos os arquivos do diretório" do seu script e:

IFS=$'\n'
for f in $(find . -type f); 
do 
    ./script.sh "$f"
done
    
por 14.03.2018 / 04:17