Ordene los files en el directory de forma recursiva en function de la date de la última modificación

Ordene los files en el directory de forma recursiva en function de la date de la última modificación

He modificado una gran cantidad de files en mi directory, quiero saber cuáles son esos files clasificándolos por la última date de modificación y quiero que se excluyan algunas de las extensiones

en el directory svn también tengo muchos files .svn que no quiero mostrar en el género

Solutions Collecting From Web of "Ordene los files en el directory de forma recursiva en function de la date de la última modificación"

find -printf "%TY-%Tm-%Td %TT %p\n" | sort -n 

le dará algo así como

2014-03-31 04: 10: 54.8596422640 ./foo
2014-04-01 01: 02: 11.9635521720 ./bar

Si desea aplanar la estructura del directory (clasificando por date todos los files en todos los directorys, ignorando en qué directory están los files), el enfoque de find sugerido por @yeti es el path a seguir. Si desea conservar la estructura del directory, puede intentar

 $ ls -ltR /path/to/directory 

que ordera basado en directory.

En bash, ejecuta shopt -s globstar primero. En ksh93, ejecute set -o globstar primero. En zsh, ya estás configurado.

 ls -dltr **/* 

Esto devolverá un error si tiene tantos files que se excede el límite de longitud de línea de command en su sistema. En zsh, puede usar esto en su lugar:

 print -rl -- **/*(Om) 

Suponiendo que usas GNU find, testing:

 find $SOMEPATH -exec stat -c '%Y %n' '{}' + | sort -n 

Para enumerar robustos los nombres de file solo con herramientas recientes de GNU:

 find . -printf '%A@ %p\0' | sort -nz | sed -z 's/^[^ ]* //' | tr '\0' '\n' 
 find $DIR -depth -maxdepth 3 \ -type d -readable -printf \ 'printf "\\n%p\\n" ls -t --color=always "%p"\n' |\ . /dev/stdin 2>&- 

Esto evita cualquier problema de list de arguments porque el único argumento que recibirá nunca es el nombre del directory que desea enumerar. Puedes hacer esto con lo que quieras.

El caparazón solo . sources . sources the |pipe como un script de shell – es el mismo process y no tiene los problemas que puede encontrar cuando se llama a execve .

En cualquier caso, lo anterior solo tiene tres profundidades que se puede ajustar cambiando maxdepth . También es lo primero, así que trabajas hacia atrás en tu directory actual desde la depth .

Quizás notes que también obtienes $LSCOLORS , en mi máquina también proporciona columnas cuidadosamente impresas y todo lo demás que quieras de ls o, para el caso, cualquier cosa que puedas imaginar que quieras hacer . source. . source.

NO SVN

De nuevo, esto hará todo lo que esperas de ls . Entonces, ocultar files .svn es tan simple como cambiar la línea ls a:

 ls -t --color=always --hide="*svn" "%p"\n 

O si desea ver las extensiones svn en cada carpeta, PERO ./svn , puede cambiarlas para que todo el command se vea así:

  find $DIR -depth -maxdepth 3 \ -type d -readable -printf \ 'printf "\\n%p\\n" ; hide= [ "%p" = "./svn" ] && hide="*svn" ls -t --color=always --hide="$hide" "%p"\n' |\ . /dev/stdin 2>&- 

Personalmente, me gusta con ls -s y, si te importa, -u clasificará por el time de acceso en lugar del time de modificación.

Este mostrará una list de todos los files en <dir> siendo el más alto el más antiguo modificado

 find <dir> -type f -print0 | xargs -0 ls -ltr 

Y con esto, la última modificación es la más alta

 find <dir> -type f -print0 | xargs -0 ls -lt 

Tenga en count que esto solo funciona si la list de nombres de file no excede el límite de longitud de línea de command total en su sistema.