O usual find -mtime
é um pouco difícil de usar aqui, pois ele só testa a idade em relação ao ponto atual no tempo.
Com o GNU date e o Bash, poderíamos fazer algo assim para adicionar cada arquivo a um arquivo correspondente à data do arquivo:
for f in * ; do
zip $(date -r "$f" +%F).zip "$f" # 2017-04-07.zip
done
ou:
for f in * ; do
d=$(date -r "$f" +%B%d)
zip ${d,,}.zip "$f" # april07.zip
done # ${var,,} is for lowercase
( date
só pode ler a hora da modificação. Para ctime
, precisaríamos usar stat
e fazer mais trabalho para corrigir o formato de saída.)
Se, por algum motivo, precisarmos obter uma lista de todos os arquivos para uma determinada data antes do processamento, poderemos coletá-los em uma matriz:
files=()
date="2017-04-07"
for f in * ; do
[ "$(date -r "$f" +%F)" = "$date" ] && files+=("$f")
done
# do something with "${files[@]}', e.g.
# zip $date.zip "${files[@]}"
Como tal, isso apenas lida com uma única data determinada de cada vez.