GNU/Linux >> Tutoriels Linux >  >> Linux

Commande de recherche Linux, recherche récursive des 10 derniers fichiers, quelle que soit la durée

On m'a dit que c'était la solution :

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

Le point clé est le printf %[email protected] espace réservé, qui est le -ctime une. Je l'ai trouvé en lisant man find .

Résultat :

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

Pour une très grande liste de fichiers, sort(1) avec des canaux peut ne pas être optimal pour l'utilisation des ressources.

sort(1) pourrait être remplacé par perl(1) et mettre en mémoire tampon les dix entrées les plus élevées uniquement. Cela a été décrit dans la commande unix :comment obtenir les n premiers enregistrements pour trois, ici une adoption pour dix disques.

Il remplace le sort(1) et head(1) filtres :

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}
'

Le résultat est identique.


Linux
  1. Rechercher des fichiers et des répertoires sous Linux avec la commande find

  2. 5 outils de ligne de commande pour trouver rapidement des fichiers sous Linux

  3. Comment Linux gère-t-il plusieurs séparateurs de chemins consécutifs (/home////nom d'utilisateur///fichier) ?

  4. Commande Linux :Comment "trouver" uniquement des fichiers texte ?

  5. Les sites Web doivent-ils vivre dans /var/ ou /usr/ selon l'utilisation recommandée ?

Commande Rm sous Linux

Commande de recherche Linux avec des exemples pratiques

Comment rechercher des fichiers avec la commande fd sous Linux

Comment lister les fichiers de manière récursive sous Linux

Tutoriel sur la commande de recherche Linux (avec exemples)

Comment trouver des dossiers sous Linux