Estoy en la carpeta raíz y necesito encontrar los últimos 10 archivos modificados solo de esta carpeta. Cada vez que pongo -mtime como dijo mi profesor, tengo 10 días. Necesito los últimos 10 archivos modificados, no los últimos 10 días. He intentado encontrar mi tiempo, mi tiempo canalizado con cola. Recibo una lista larga de todos los archivos modificados de los últimos 10 días. Necesito sólo los últimos 10 archivos modificados del directorio raíz.
Respuesta1
ls -t | head
debería funcionar, siempre y cuando los nombres de archivos no incluyan nuevas líneas.
ls -t
ordena por tiempo, con los archivos más nuevos primero. head
sólo mantiene las 10 líneas principales.
Si desea obtener más detalles, puede utilizar ls -lt
, pero eso antepone una línea adicional con el tamaño total, por lo que necesita ls -lt | head -n 11
.
Si desea incluir archivos ocultos, puede utilizar ls -At | head
. ( ls -A
, o --almost-all
para GNU ls, incluye archivos ocultos excepto .
y ..
.)
Tenga en cuenta que esto le brinda los 10 archivos más recientes de cualquier tipo, incluidos directorios, no solo archivos normales.
Respuesta2
En zsh
, para los 10 archivos normales en el directorio de trabajo actual o debajo que se modificaron por última vez más recientemente:
ls -ldt -- **/*(D.om[1,10])
En otros shells, pero asumiendo que estás en un sistema GNU reciente:
find . -type f -printf '%T@:%P\0' |
LC_ALL=C sort -zrn |
LC_ALL=C sed -z 's/^[^:]*://;10q' |
xargs -r0 ls -ltd --
Si no desea considerar archivos en subdirectorios, elimine el **/
in zsh
o agréguelo -maxdepth 1
a find
after .
.
Para excluir archivos ocultos, elimine el D
calificador global en zsh
o cambie la find
línea a:
LC_ALL=C find . -name '.?*' -prune -o -type f -printf '%T@:%P\0' |
O si también excluye archivos en subdirectorios:
LC_ALL=C find . -maxdepth 1 ! -name '.*' -type f -printf '%T@:%P\0' |
Estos no asumen qué caracteres o no caracteres pueden contener las rutas de los archivos.