Je veux ajouter la date à côté d'un nom de fichier ("somefile.txt"). Par exemple: somefile_25-11-2009.txt ou somefile_25Nov2009.txt ou quoi que ce soit à cet effet
Peut-être qu'un script fera ou une commande dans la fenêtre du terminal. J'utilise Linux (Ubuntu).
Merci d'avance.
oh j'ai presque oublié d'ajouter que le script ou la commande devrait mettre à jour le nom de fichier à une nouvelle date chaque fois que vous souhaitez enregistrer le fichier dans un dossier spécifique tout en conservant les fichiers précédents. Il y aurait donc éventuellement des fichiers comme celui-ci dans le dossier: filename_18Oct2009.txt, filename_9Nov2009.txt, filename_23Nov2009.txt
Il y a deux problèmes ici.
1. Obtenez la date sous forme de chaîne
C'est assez simple. Utilisez simplement la commande date
avec la commande +
option. Nous pouvons utiliser des backticks pour capturer la valeur dans une variable.
$ DATE=`date +%d-%m-%y`
Vous pouvez modifier le format de la date en utilisant différents %
options détaillées sur la page man date .
2. Fractionner un fichier en nom et extension
C'est un peu plus compliqué. Si nous pensons qu'ils ne seront qu'un seul .
dans le nom de fichier, nous pouvons utiliser cut
avec .
comme délimiteur.
$ NAME=`echo $FILE | cut -d. -f1
$ EXT=`echo $FILE | cut -d. -f2`
Cependant, cela ne fonctionnera pas avec plusieurs .
dans le nom du fichier. Si nous utilisons bash
- ce que vous êtes probablement - nous pouvons utiliser un peu magie bash qui nous permet de faire correspondre les modèles lorsque nous faisons une expansion variable :
$ NAME=${FILE%.*}
$ EXT=${FILE#*.}
En les assemblant, nous obtenons:
$ FILE=somefile.txt
$ NAME=${FILE%.*}
$ EXT=${FILE#*.}
$ DATE=`date +%d-%m-%y`
$ NEWFILE=${NAME}_${DATE}.${EXT}
$ echo $NEWFILE
somefile_25-11-09.txt
Et si nous nous inquiétons moins de la lisibilité, nous faisons tout le travail sur une seule ligne (avec un format de date différent):
$ FILE=somefile.txt
$ FILE=${FILE%.*}_`date +%d%b%y`.${FILE#*.}
$ echo $FILE
somefile_25Nov09.txt
Vous pouvez utiliser des backticks.
$ echo "myfilename-"`date +"%d-%m-%Y"`
Rendements:
myfilename-25-11-2009
cp somefile somefile_`date +%d%b%Y`
une solution un peu plus compliquée qui correspond parfaitement à vos spécifications
echo `expr $FILENAME : '\(.*\)\.[^.]*'`_`date +%d-%m-%y`.`expr $FILENAME : '.*\.\([^.]*\)'`
où le premier "expr" extrait le nom du fichier sans extension, le second "expr" extrait l'extension