web-dev-qa-db-fra.com

Comment faire en sorte qu'un script bash génère un nouveau nom de fichier à chaque exécution?

J'aimerais créer un fichier .tar d'un répertoire particulier tous les jours de la semaine. La façon dont je voudrais le faire est avec un script bash qui crée un fichier tar chaque jour avec crontab.

Je me demandais, est-il possible de régler le nom du fichier tar créé par le script bash? À l'heure actuelle, c'est la même chose chaque fois que le fichier est créé, car bash n'a qu'une commande: tar -cvf file.tar /home/name/folder/

Mais j'aimerais que ce soit légèrement différent en fonction du jour, par exemple. FileTus.tar, FileWed.tar, FileFri.tar, etc.

Y a-t-il un moyen de faire cela avec des commandes de terminal?

Merci

4
agmb

La commande date peut générer une date sous forme de texte au format souhaité. Vous l'utiliseriez ensuite dans un script, par exemple:

tar -cvf File$(date +%a).tar /home/name/folder

Cela produirait FileMon.tar, FileTue.tar comme ci-dessus. Voir man date pour une description des différents formats de date qu'il peut produire.

8
chronitis

Au lieu de juste des noms de jours, pourquoi ne pas créer un format de date complet? Ainsi, le même nom de fichier n'est pas généré toutes les semaines :)

Quelque chose comme ça -

nits@excalibur:~$ tar -cvf /home/nits/Desktop/File$(date +%d%B%Y).tar Music/

produirait une sortie comme celle-ci -

nits@excalibur:~$ ls ~/Desktop/
File14August2012.tar

Pour quelque chose avec un horodatage (comme demandé dans les commentaires):

nits@excalibur:~$ tar -cvf "/home/nits/Desktop/File$(date +%d%B%Y_%H:%M).tar" Music/
nits@excalibur:~$ ls ~/Desktop/
File14August2012_20:14.tar
4
Nitin Venkatesh