GNU/Linux >> Tutoriales Linux >  >> Linux

Comando de búsqueda de Linux, encuentre los 10 archivos más recientes de forma recursiva independientemente del período de tiempo

Me dijeron que esta es la solución:

find . -type f -printf "%[email protected] %p\n" | sort -rn | head -n 10

El punto clave es el printf %[email protected] marcador de posición, que es el -ctime una. Lo encontré leyendo man find .

Resultado:

1336992789.0000000000 ./Mobilni Telefoni/05. iPhone/03. iPhone 4G Firmware/5.1.1/iPhone3,1_5.1.1_9B206_Restore.ipsw.filepart
1336928538.0000000000 ./GPS Navigacije/01. Garmin/03. Garmin Other/test.txt
1336922295.0000000000 ./GPS Navigacije/01. Garmin/03. Garmin Other/garmin_kgen_15.exe
1336868365.0000000000 ./Mobilni Telefoni/11. Samsung/1. FLASH FILES/1. SRPSKI HRVATSKI JEZICI/E/E2152/E2152_XXJH4_OXFJI2.zip.filepart
1336867426.0000000000 ./Mobilni Telefoni/11. Samsung/1. FLASH FILES/1. SRPSKI HRVATSKI JEZICI/E/E210/E210_XFGH2.rar
1336866301.0000000000 ./Mobilni Telefoni/11. Samsung/1. FLASH FILES/1. SRPSKI HRVATSKI JEZICI/E/E2330/FlashTool_E2_R6.zip
1336865921.0000000000 ./Mobilni Telefoni/11. Samsung/1. FLASH FILES/1. SRPSKI HRVATSKI JEZICI/E/E2330/E2330_OXFKE2.rar
1336865409.0000000000 ./Mobilni Telefoni/11. Samsung/1. FLASH FILES/1. SRPSKI HRVATSKI JEZICI/E/E2230/E2230_XXKC1_CDS.zip
1336865398.0000000000 ./Mobilni Telefoni/11. Samsung/1. FLASH FILES/1. SRPSKI HRVATSKI JEZICI/E/E2230/E2230_XXKC1_BIN.zip
1336864949.0000000000 ./Mobilni Telefoni/11. Samsung/1. FLASH FILES/1. SRPSKI HRVATSKI JEZICI/E/E2230/E2230_OXFKC1_CSC.zip

Para una lista muy grande de archivos, sort(1) con tuberías podría no ser óptimo para el uso de recursos.

sort(1) podría ser reemplazado por perl(1) y búfer las diez entradas más altas, solamente. Esto se ha descrito en comando de Unix:cómo obtener los n registros principales para tres, aquí una adopción para diez discos.

Reemplaza el sort(1) y head(1) filtros:

find . -type f -printf "%[email protected] %p\n" | perl -ane '
    BEGIN {@top = ([-1]) x 10}
    if ($F[0] > $top[0][0]) {
        @top = sort {$a->[0] <=> $b->[0]} @top[1..9], [$F[0], $_];
    }
    END {print for reverse map {$_->[1]} @top}
'

El resultado es idéntico.


Linux
  1. Encuentra archivos y directorios en Linux con el comando de búsqueda

  2. 5 herramientas de línea de comandos para encontrar archivos rápidamente en Linux

  3. 25 ejemplos prácticos útiles del comando find en Linux

  4. Encuentre el tiempo de ejecución de un comando o proceso en Linux

  5. Comando de Linux:¿Cómo 'buscar' solo archivos de texto?

Comando Rm en Linux

Comando Find de Linux con ejemplos prácticos

Cómo encontrar archivos con el comando fd en Linux

Cómo listar archivos recursivamente en Linux

Tutorial de comando de búsqueda de Linux (con ejemplos)

Cómo encontrar carpetas en Linux