Linux renommer extension de certains fichiers en fonction de la date de création
Bonjour,
Dans un dossier, j'ai plusieurs fichiers avec de dates de créations différentes.
J'ai besoin de renommer seulement les fichiers datant du 15/01/2021 au 11/01/2021. Les fichiers sont nommés nomfichier.zip.tmp et doivent être renommés nomfichier.zip
avec: mv nomfichier.zip.tmp nomfichier.zip =>> c'est un par un, alors que j'ai une cinquantaine.
avec: mv .zip.tmp .zip * ==> ça va changer tous les fichiers du dossier, alors que je veux seulement ceux entre le 15/01 et le 11/01
avez vous des idées?
Dans un dossier, j'ai plusieurs fichiers avec de dates de créations différentes.
J'ai besoin de renommer seulement les fichiers datant du 15/01/2021 au 11/01/2021. Les fichiers sont nommés nomfichier.zip.tmp et doivent être renommés nomfichier.zip
avec: mv nomfichier.zip.tmp nomfichier.zip =>> c'est un par un, alors que j'ai une cinquantaine.
avec: mv .zip.tmp .zip * ==> ça va changer tous les fichiers du dossier, alors que je veux seulement ceux entre le 15/01 et le 11/01
avez vous des idées?
Configuration: Windows / Chrome 88.0.4324.146
A voir également:
- Linux renommer extension de certains fichiers en fonction de la date de création
- Renommer des fichiers en masse - Guide
- Changer extension fichier - Guide
- Fonction si et - Guide
- Extension dat - Guide
- Creation de site web - Guide
1 réponse
Bonjour,
Je suppose que tu voulais dire du 11/01 au 15/01 2021.
Dans ton cas, ça donnerait quelque chose du genre :
Ce script (appelons-le
Si ça te paraît correct, il ne reste plus qu'à enlever
Bonne chance
Je suppose que tu voulais dire du 11/01 au 15/01 2021.
- Pour trouver les fichiers entre deux dates, tu peux utiliser
find
, comme proposé dans cette discussion. - Pour extraire le nom sans
.tmp
on peut utilisé l'opérateur%.
comme expliqué dans cette discussion. - Pour se restreindre aux fichiers dont le nom termine par
.zip.tmp
, on ajoute un filtre à l'aide degrep
. - Tant qu'on est en phase de test, plutôt que d'appeler la commande, on va l'afficher avec
echo
pour la contrôler.
Dans ton cas, ça donnerait quelque chose du genre :
#!/bin/bash
for file in $(find . -newermt "2021-01-11" ! -newermt "2021-01-15" | grep "\.zip\.tmp$"); do
echo mv "$file" "${file%.*}"
done
Ce script (appelons-le
script.sh) doit être placé dans un répertoire parent qui contient les fichiers à traiter. Pour l'exécuter :
chmod a+x script.sh
./script.sh
Si ça te paraît correct, il ne reste plus qu'à enlever
echoet relancer le script.
Bonne chance