Esta es una versión recursiva (es decir, encuentra el archivo actualizado más recientemente en un directorio determinado o cualquiera de sus subdirectorios)
find /dir/path -type f -printf "%example@unixlinux.online %p\n" | sort -n | cut -d' ' -f 2- | tail -n 1
Breve explicación laica de la línea de comando:
find /dir/path -type fencuentra todos los archivos en el directorio-printf "%example@unixlinux.online %p\n"imprime una línea para cada archivo donde%example@unixlinux.onlineson los segundos flotantes desde la época de 1970 y%pes la ruta del nombre de archivo y\nes el carácter de nueva línea- para obtener más información, consulte
man find
|es una conchapipe(verman bashsección sobrePipelines)sort -nsignifica clasificar en la primera columna y tratar el token como numérico en lugar de lexicográfico (verman sort)cut -d' ' -f 2-significa dividir cada línea usando elcarácter y luego para imprimir todos los tokens a partir del segundo token (verman cut)- NOTA:
-f 2imprimiría solo el segundo token
- NOTA:
tail -n 1significa imprimir la última línea (verman tail)
ls -Art | tail -n 1
Esto devolverá el último archivo o directorio modificado. No es muy elegante, pero funciona.
Banderas usadas:
-A enumerar todos los archivos excepto . y ..
-r orden inverso al ordenar
-t ordenar por tiempo, más reciente primero
ls -t | head -n1
Este comando en realidad proporciona el último archivo o directorio modificado en el directorio de trabajo actual.