Je me demandais s'il était possible d'avoir une commande qui crée un fichier, mais chaque fois que la commande est exécutée, elle n'écraserait pas le fichier créé lors de l'exécution précédente.
Par exemple: touch test1.txt
créerait 1 fichier appelé test1.txt
. Mais la prochaine fois que je l'exécuterai, j'aimerais que le nouveau fichier soit appelé test2.txt
, ou quelque chose comme ça. Donc sans écraser le fichier déjà existant. D'une certaine manière, il pourrait être exécuté plusieurs fois sans problème.
Ne vous méprenez pas, je n'essaye pas de créer plusieurs fichiers avec une seule commande.
Merci d'avance!
la source
touch test$(date +%Y%m%d-%H%M%S) ; touch test$(date +%Y%m%d-%H%M%S)
, il n'a créé qu'un seul fichier. Nanosecondes temps fonctionne:touch test$(date +%Y%m%d-%H%M%S%N) ; touch test$(date +%Y%m%d-%H%M%S%N)
ettouch test$(date +%Y%m%d-%H%M%S%N) test$(date +%Y%m%d-%H%M%S%N)
créer deux fichiers chacun.$()
puisque vous permet d'expressions de nid, mais vous pouvez également utiliser des apostrophes inverses:touch test`date +%Y%m%d-%H%M%S`
.Je doute qu'il existe une commande générale pour le faire, mais vous pouvez penser à quelque chose comme ça:
Le paramètre d'entrée de la fonction est divisé en préfixe, nombre, suffixe, puis jusqu'à ce que le fichier existe, le nombre est incrémenté. Trouvé un emplacement libre, le fichier est créé avec
touch
.Le mécanisme de partage doit être adapté à vos besoins et divers contrôles d'erreur doivent être ajoutés.
la source
Si les numéros de séquence ne sont pas requis, la façon la plus simple consiste à utiliser la
mktemp
commande.la source
TMPFILE=$(mktemp /tmp/example.XXXXXXXXXX) || exit 1 echo "program output" >> $TMPFILE
TMPFILE='/tmp/tmp.$$'; touch $TMPFILE