Usando rename
( prename
):
-
Se o registro de data e hora for o mesmo para todos os arquivos, no diretório que contém os arquivos que você pode fazer:
rename -n 's/\.1457644337$//' example1.*.*
-
Para timestamps variados:
rename -n 's/\.\d+$//' example1.*.*
Recursivamente:
find . -type f -name 'example1.*.*' -exec rename -n 's/\.\d+$//' {} +
Remova -n
(dry-run) se você estiver satisfeito com as alterações a serem feitas.
Observe que isso removerá a última parte contendo dígitos, incluindo .
. Então, se você tiver apenas um número aleatório além do timestamp que será removido também.
Usando a expansão de parâmetros do shell:
-
Se o carimbo de data / hora for o mesmo para todos os arquivos:
for file in *.*; do mv -i "$file" "${file%.1457644337}"; done
-
Para timestamps variáveis, assumindo
bash
(outras camadas avançadas têm opções semelhantes):shopt -s extglob; for file in *.*; do mv -i "$file" "${file%.+([0-9])}"; done
Recursivamente:
find . -type f -name 'example1.*.*' -exec \
bash -ic 'shopt -s extglob; mv -i "$1" "${1%.+([0-9])}"' _ {} \;
Aqui eu usei a opção extglob
shell para corresponder aos dígitos após o último .
usando o padrão +([0-9])
, portanto o padrão de expansão do parâmetro de substituição se torna ${file%.+([0-9])}
.
Novamente, isso não corresponde estritamente a um registro de data e hora. Embora você possa modificar o padrão para obter robustez se tiver um formato preciso para o timesatmps.