-
Sobre o método 100 vezes mais rápido, usando
stat
para obter as datas, depoisdate -f -
duas vezes para fazer as contas e formatação, com/usr/bin/*
( 4852 arquivos) como um exemplo:stat -c %y /usr/bin/* | date -f - "+%F - %u days - 1 days" | date -f -
A saída é 4852 linhas de várias datas, todas as quais são os sábados anteriores.
-
Mais lento: combinar os dois subshells
date
é executado em cerca de 33% menos tempo:date -r /bin/bash "+%F" # print this only for reference date -d "$(date -r /bin/bash "+%F - %u days - 1 days")"
Saída:
2017-05-16 Sat May 13 00:00:00 EDT 2017
Referência para ambos, (o segundo método em um loop for
):
$ time -p stat -c %y /usr/bin/* | date -f - "+%F - %u days - 1 days" | \
date -f - > /dev/null
real 0.19
user 0.14
sys 0.19
$ time -p for f in /usr/bin/* ; do \
date -d "$(date -r "$f" "+%F - %u days - 1 days")" ; done > /dev/null
real 27.31
user 8.11
sys 14.93