bash: cd al directorio secundario modificado más recientemente


10

Preguntándose si hay una manera fácil y / o portátil de decir "cambiar al directorio secundario modificado más recientemente". Puedo usar ls y awk pero probablemente haya una mejor manera.

cd $( ls -ltrd */ | tail -1 | awk '{ print $8 }' )

Tengo que ejecutar un comando en un directorio de "archivos de salida" con cientos de subdirectorios y el 99% del tiempo quiero ir al directorio cambiado más recientemente. No sé cuáles serán los nombres de los directorios de antemano.


1
¿Por qué no cd $(ls -v1td */ | head -1)?
— Pablo Castellazzi

Buen punto ... No estoy tan familiarizado con las opciones de ls como debería estar ...
— twblamer

Respuestas:


13

Suponiendo que sus directorios no contengan caracteres no imprimibles:

cd  "$(\ls -1dt ./*/ | head -n 1)"

(tenga en cuenta que también considerará enlaces simbólicos a directorios).

Si no te importa cambiar a zsh:

cd ./*(/om[1])

O para incluir enlaces simbólicos a directorios como en el primer ejemplo:

cd ./*(-/om[1])

0

Disfrutar.

cdd(){ 
  # cd into the last directory modified/created in pwd
   ls -p | grep / | tail -1 | pbcopy; str=$(pbpaste); cd $str
}

¿Por qué poner el nombre del directorio en el portapapeles? Además, vea qué sucede si el nombre del directorio contiene un espacio, algo bastante común en estos días.
— roaima

El uso del portapapeles le permite realizar más operaciones si lo desea.
— jasonleonhard

Si realmente lo desea, puede agregar más campos relativamente fácil. en lugar de {print $ 9} puede usar {print $ 9, $ 10, $ 11} tantas como desee.
— jasonleonhard

He revisado mi respuesta para tener en cuenta el espacio en blanco.
— jasonleonhard

He aquí una explicación aproximada: explainshell.com/...
— jasonleonhard

-1

Prueba este breve comando versionado

cd $(ls -t | head -n 1)   

Eso solo funciona si el archivo modificado más recientemente en el directorio actual es de tipo directorio (o enlace simbólico al directorio) y su nombre no contiene espacios en blanco o comodines o líneas nuevas y no comienza con, por lo que no es una mejora con respecto al Respuesta ya aceptada.
— Stéphane Chazelas
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.