A seguinte sequência canalizada utiliza sed
para alterar primeiro os nomes dos ficheiros que estão no formato *.DDMMYY.*
para o formato *|DD|MM|YY|*
. A saída reformatada é canalizada para sort
, em que o '|' é usado como o separador de campo e classificado primeiro por YY ( -k4n
), depois por MM ( -k3n
) e, finalmente, por DD ( -k2n
). Em seguida, a saída classificada é canalizada de volta para sed
, onde o nome do arquivo é transformado de volta para o formato original *.DDMMYY.*
.
sed 's/\.\([[:digit:]]\{2\}\)\([[:digit:]]\{2\}\)\([[:digit:]]\{2\}\)\./||||/' | \
sort -t'|' -k4n -k3n -k2n | \
sed 's/|\([[:digit:]]\{2\}\)|\([[:digit:]]\{2\}\)|\([[:digit:]]\{2\}\)|/../'
Usando o seguinte exemplo de arquivos:
$ ls *bar -1
abc.291015.bar
abc.291115.bar
abc.291215.bar
abc.301215.bar
foo.040815.bar
foo.150115.bar
foo.150914.bar
foo.260815.bar
foo.301216.bar
foo.310715.bar
xyz.010113.bar
A sequência produzirá o seguinte:
xyz.010113.bar
foo.150914.bar
foo.150115.bar
foo.310715.bar
foo.040815.bar
foo.260815.bar
abc.291015.bar
abc.291115.bar
abc.291215.bar
abc.301215.bar
foo.301216.bar