Resposta corrigida para obter 2013-11-25 em vez de 20131125
Se o seu script for executado com um shell compatível com bash
, a solução mais fácil é substituir
d=$(date -r "$x" +%Y-%m-%d)
com
d="${x:4:4}-${x:8:2}-${x:10:2}"
solução portátil com expr:
d=$(expr substr "$x" 5 4)-$(expr substr "$x" 9 2)-$(expr substr "$x" 11 2)
Se você precisa apenas 20131125 em vez de 2013-11-25 como nome do diretório, você também pode
Solução com sed:
d=$(echo "$x" | sed 's/.*_\([0-9]*\)_.*//')
Os comandos sed
substituem o nome do arquivo pelo número entre os sublinhados (= a data).
Solução com o awk:
d=$(echo "$x" | awk -F _ '{print $2}')
Solução com corte :
d=$(echo "$x" | cut -d_ -f 2')