Renomear arquivos no bash com script baseado na data da modificação do arquivo

0

Já faz algum tempo desde que tive que dirigir para scripts de shell. No entanto, eu tenho um script de shell onde estou renomeando arquivos com base na extensão de arquivo de um upload de ftp.

Atualmente, os arquivos são enviados para o servidor por meio de um processo de FTP. Todos os arquivos são renomeados de filename.txt para filename.dat . O que eu gostaria de fazer é apenas renomear os arquivos com base na data de modificação do arquivo após um determinado número de minutos.

i.e. todos os arquivos cujo tempo de modificação é maior que cinco (5) minutos.
-mtime -5.

Abaixo está o meu script de shell:

#!/bin/bash
for name in /u/easy/ep2/data/download/*.txt; do
    newname=${name%.txt}.log
    mv "$name" "$newname"
done
    
por Stan Brown 09.08.2018 / 20:19

1 resposta

0

Você precisa de +5 por mais de 5 minutos.

find /u/easy/ep2/data/download -maxdepth 1 -name '*.txt' -mtime +5 \
    -exec sh -c 'mv "$1" "${1%.txt}.log"' arg0ignored {} \;

Editar

Exemplo:

$ find /tmp -maxdepth 1 -name '*.txt' -mtime +5 -exec sh -c 'echo mv "$1" "${1%.txt}.log"' x0 '{}' \;
mv /tmp/1.txt /tmp/1.log
mv /tmp/2.txt /tmp/2.log
    
por 09.08.2018 / 20:33