Estoy tratando de escribir un script para el trabajo para automatizar algunos informes en una salida. Los archivos de registro se almacenan (actualmente, se está 'estandarizando' en el futuro) en este tipo de estructura de ruta:
/<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>
Se conoce cada parte de la ruta, excepto las marcas de fecha y hora, que siempre son las últimas en la carpeta.
Si trato de usar un comodín en lugar de la marca de fecha y hora, obtengo múltiples resultados, por ejemplo:
> ls /<root_path>/<process_two_path>/logs/* [tab]
20130102-175103
20130118-090859
20130305-213506
Solo quiero que devuelva el último, ¿es esto posible con Bash?
NB (no tengo zsh, y por encantador que parezca, dudo que lo tengamos en el trabajo)
-1
). Esto se agregó en bash 4.2. RHEL5 es probablemente la distribución empresarial mainstream compatible más antigua disponible y utiliza bash 4.2.20.bash
have:"${list[@]: -1}"
like inksh93
([-1]
proviene dezsh
).3.2
. RHEL 3 y 4 todavía son compatibles con una vida útil prolongada.POSIXY:
Como mencionas
zsh
:fuente
Usa el bash glob en un bash for loop. Me gusta esto:
Esto depende del hecho de que bash hace la expansión global clasificada alfabéticamente. Lea el manual de bash para más información. Tenga en cuenta que esto depende de LC_COLLATE . Esto también depende del hecho de que la variable
filename
todavía contiene el último valor después de que el ciclo ha terminado.Si desea el nombre de archivo con la marca de tiempo más antigua, puede hacerlo así:
fuente
-1 es el valor predeterminado en las canalizaciones, y la salida de ls ya debería estar ordenada:
Si otros buscaban cómo insertar el primer o el último resultado de forma interactiva, puede vincular menu-complete o menu-complete-backward en .inputrc:
Si show-all-if-ambiguous está habilitado,
set completion-query-items 0
elimina la solicitud cuando hay 101 o más resultados yset page-completions off
deshabilita el buscapersonas.fuente
Debería hacer el truco.
fuente
ls
. Nunca.