2012-08-17 5 views
0

En utilisant bash, je dir/home/user/logs/goudron extraction le plus récent fichier

2 août 15h34 backup.20120802.tar.gz

3 août 00h26 backup.20120803 .tar.gz

4 août 0h25 backup.20120804.tar.gz

15 août 06h39 backup.20120816.tar.gz

Cela est mis à jour tous les jours, mais si quelque chose va mal, je le veux automatiquement restaurer la sauvegarde la plus récente, comment puis-je utiliser bash seulement extraire le plus récent?

Répondre

0

Si le temps les timbres ne sont pas toujours fiables, essayez de trier par date.

ls -1 /home/user/logs/backup.*.tar.gz | sort -t . -k2rn | head -1 

Idéalement, vous ne devriez pas analyser la sortie de ls, mais s'il n'y a que des fichiers régulièrement nommés qui lui correspondent, il peut être la solution la plus simple; sort attend de toute façon une entrée orientée ligne, de sorte que la tâche s'implique davantage dans le cas général de noms de fichiers complètement arbitraires. (Cela peut n'avoir aucun sens pour vous, mais il serait parfaitement acceptable pour Unix d'avoir un fichier nommé backup.20120816.tar.gz(newline)backup.20380401.tar.gz.)

1
ls -t1 /home/user/logs/ | head -1 

vous donne le fichier modifié le plus récent dans/home/user/logs /. Vous pourriez faire:

cd /dir/to/extract 
tar -xzf "$(ls -t1 /home/user/logs/ | head -1)" 

REMARQUE:
cela suppose que/home/user/logs/est plat et ne contient que des fichiers "* tar.gz"

Questions connexes