J'essaie d'écrire un script pour le travail afin d'automatiser certains rapports sur une sortie. Les fichiers journaux sont (actuellement, ils sont en train d'être «standardisés» à l'avenir) stockés dans ce type de structure de chemin:
/<root_path>/<process_one_path>/logs/<time_date_stamp>/<specific_log_file>
/<root_path>/<process_two_path>/logs/<different_time_date_stamp>/<specific_log_file>
Chaque partie du chemin est connue à l'exception des horodatages, qui sont toujours les plus récents du dossier.
Si j'essaie d'utiliser un caractère générique à la place de l'horodatage, j'obtiens plusieurs résultats, par exemple:
> ls /<root_path>/<process_two_path>/logs/* [tab]
20130102-175103
20130118-090859
20130305-213506
Je veux seulement qu'il retourne le dernier, est-ce possible avec Bash?
NB (je n'ai pas de zsh, et aussi beau que cela puisse paraître, je doute que nous l'aurons jamais au travail)
-1
). Cela a été ajouté dans bash 4.2. RHEL5 est probablement la distribution d'entreprise la plus ancienne prise en charge disponible et utilise bash 4.2.20.bash
have:"${list[@]: -1}"
like inksh93
([-1]
vient dezsh
).3.2
. RHEL 3 et 4 sont toujours pris en charge sous une durée de vie prolongée.POSIX:
Puisque vous mentionnez
zsh
:la source
Utilisez le bash glob dans une boucle bash for. Comme ça:
Cela dépend du fait que bash effectue une expansion globale triée par ordre alphabétique. Lisez le manuel bash pour plus d'informations. Notez que cela dépend de LC_COLLATE . Cela dépend également du fait que la variable
filename
contient toujours la dernière valeur après la fin de la boucle.Si vous voulez le nom de fichier avec le plus ancien horodatage, vous pouvez le faire comme ceci:
la source
-1 est la valeur par défaut dans les pipelines, et la sortie ls doit déjà être triée:
Si d'autres cherchaient comment insérer le premier ou le dernier résultat de manière interactive, vous pouvez lier menu-complete ou menu-complete-backward dans .inputrc:
Si show-all-if-ambiguous est activé,
set completion-query-items 0
supprime l'invite lorsqu'il y a 101 résultats ou plus etset page-completions off
désactive le pager.la source
Devrait faire l'affaire.
la source
ls
devez pas analyser la sortie de . Déjà.