Mi carpeta parent
tiene el siguiente contenido:
A.Folder B.Folder C.File
Tiene tanto carpetas como archivos dentro. B.Folder
Es más nuevo. Ahora solo quiero obtener B.Folder
, ¿cómo podría lograr esto? Intenté esto
ls -ltr ./parent | grep '^d' | tail -1
pero me da drwxrwxr-x 2 user user 4096 Jun 13 10:53 B.Folder
, pero solo necesito el nombre B.Folder
.
shell
files
ls
timestamps
Daniel
fuente
fuente
ls -ltr ./parent | grep '^d' | tail -1| awk '{print $NF}'
Respuestas:
Prueba esto:
-t
las opciones hacenls
ordenar por hora de modificación, primero las más nuevasSi quieres eliminar
/
:fuente
/
?ls -td -- ./parent | head -n 1
, no me da los resultados correctos, ¿DEBO usar subshell comocd ./parent
cada vez y ejecutar este comando? ¿Alguna solución?La diferencia con la solución de Herson es la barra inclinada posterior
*
, que hace que el shell ignore todos los archivos que no sean dir. A diferencia de Gnouc , funcionará si estás en otra carpeta.Cut necesita saber el número de directorios principales (2) para eliminar '/' final. Si no tienes eso, usa
fuente
Respuesta zsh obligatoria:
Los caracteres entre paréntesis son calificadores globales :
/
para hacer coincidir solo directorios,om
ordenar coincidencias al aumentar la edad y[1]
retener solo la primera coincidencia (es decir, la más reciente). AgregueN
si desea obtener una matriz vacía (normalmente obtiene una matriz de 1 elemento) si no hay un subdirectorio deparent
.Alternativamente, suponiendo que
parent
no contenga ningún carácter globbing de shell:Si no tiene zsh pero tiene herramientas recientes de GNU (es decir, Linux o Cygwin no integrados), puede usarlo
find
, pero es engorroso. Aquí hay una manera:Hay una solución simple con
ls
, que funciona siempre que ningún nombre de directorio contenga nuevas líneas o (en algunos sistemas) caracteres no imprimibles:fuente
Tu puedes hacer:
fuente
El siguiente comando hará el trabajo incluso en caso de que el nombre del directorio contenga espacio:
La explicación actualizada de las cosas en los backticks es:
.
- el directorio actual (es posible que desee especificar una ruta absoluta aquí)-mindepth/-maxdepth
- restringir el comando de búsqueda solo a los elementos secundarios inmediatos del directorio actual-type d
- solo directorios-exec stat ..
- genera el tiempo modificado y el nombre del directorio de find separados con una pestaña (y no un espacio)sort -n -r |head -1 | cut -f2
- date ordena el directorio y muestra el nombre completo de la última modificación (incluso si contiene algo de espacio como la pestaña delimitador predeterminado de corte)fuente