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