Se você está no GNU Coreutils, você tem isto:
$ date --date=2014-11-13 +"%Y%m%d"
20141113
No entanto:
$ date --date=2014-11-130ABCJUNK +"%Y%m%d"
date: invalid date ‘2014-11-130ABCJUNK’
Portanto, a tarefa é muito mais simples: extatualize os dez primeiros caracteres de cada YYYY-MM-DDetc
nome do arquivo para obter a data e, em seguida, passe para date
para reformatar.
Mas, se estivermos no GNU Coreutils, podemos pular o comando date
porque touch
tem exatamente a mesma opção --date=STRING
.
for file in * ; do
date=${file%${file##??????????}} # chop all but first ten
touch --date=$date -- "$file"
done
Mas por que esse dez caractere cortando o POSIX portátil quando estamos contando com touch
do GNU Coreutils?
for file in * ; do
date=${file:0:10}
touch --date=$date -- "$file"
done