GNU/Linux >> Tutoriels Linux >  >> Linux

Comment rechercher et répertorier récursivement les fichiers par date sous Linux

La principale raison pour laquelle la plupart des utilisateurs de systèmes d'exploitation choisissent Linux plutôt que d'autres systèmes d'exploitation est la liberté d'exploration. Avec Linux, vous êtes lié à certaines règles de système d'exploitation faiblement couplées. Le système d'exploitation prédéfinit certaines règles standard modifiables à utiliser dans son environnement.

Une fois que vous vous êtes débarrassé du manteau du débutant, vous pouvez sortir de ces règles par défaut et créer les vôtres. Sous Linux, le système d'exploitation est votre fidèle serviteur et vous le maître.

Ce cas n'est pas viable dans d'autres distributions de système d'exploitation car il y a trop d'abstractions en place. Les systèmes d'exploitation ici sont plus de votre assistant. Vous ne pouvez jamais avoir plus de puissance que le système d'exploitation, comme dans le cas de Linux. Au fur et à mesure que vous continuez à développer votre expérience utilisateur dans un environnement de système d'exploitation Linux, votre curiosité en matière de système d'exploitation grandira chaque jour. Vous voudrez toujours savoir ce qui se cache ici et ce que vous pouvez faire de plus sous son égide.

Travailler avec des fichiers et des répertoires sous Linux

Un scénario parfait est votre interaction quotidienne avec les fichiers et les dossiers sous l'environnement du système d'exploitation Linux. L'utilisation du système de fichiers du système d'exploitation Linux ne se limite pas à la création, à l'édition, à la modification et à la suppression des systèmes de fichiers et des dossiers de l'utilisateur. Chaque action liée aux fichiers et dossiers/répertoires de l'utilisateur sous un environnement Linux laisse une empreinte ou une empreinte digitale de l'utilisateur. C'est comme entrer dans une pièce pour toucher et échanger des objets.

Si un propriétaire ou un gardien Linux gère cette pièce dans laquelle vous êtes entré, il saura exactement ce que vous avez fait et quels éléments vous avez touchés ou échangés. Linux a des commandes utiles pour nous aider à obtenir de tels résultats. Vous saurez ce qui est arrivé aux fichiers et dossiers de votre système d'exploitation Linux et identifierez ces actions en fonction du moment où elles se sont produites.

En bref, lorsqu'il s'agit de fichiers et de répertoires sous un environnement de système d'exploitation Linux, nous pouvons créer une chronologie des événements pour identifier les modifications de fichiers vulnérables grâce à des horodatages attachés à chaque modification. Avantage, vous saurez si la modification a été associée à un contenu malveillant grâce aux journaux système générés.

Les commandes Linux à utiliser

Nous utiliserons quelques commandes simples pour nous aider à comprendre l'implication objectivée de cet article. Vous devez d'abord lancer votre terminal et naviguer dans un chemin système dont vous savez qu'il contient de nombreux répertoires de fichiers et de dossiers. Pour être sûr et ne pas jouer avec vos fichiers système vulnérables, vous pouvez utiliser votre répertoire "Documents" qui est généralement prédéfini dans le système d'exploitation Linux. La commande suivante devrait vous amener à ce répertoire "Documents".

$ cd ~/Documents

C'est un répertoire populaire avec de nombreux fichiers et sous-répertoires. Un autre répertoire à utiliser pour cette expérience d'article est le répertoire "Téléchargements". C'est un endroit où vous ne manquerez jamais les fichiers téléchargés et autres sous-répertoires.

$ cd ~/Downloads

Pour lancer cette expérience, nous avons besoin d'un échantillon de sortie relatable de notre terminal. Nous allons saisir une chaîne de commande sur notre terminal qui nous permettra de lister les fichiers actifs et leurs sous-répertoires associés. De plus, chaque élément de la sortie résultante de cette commande sera lié à un horodatage qui pointe vers la dernière tentative de modification sur le fichier, répertoire ou sous-répertoire associé.

La chaîne de commande à utiliser est la suivante :

$ find . -printf '%T@ %t %p\n' | sort -k 1 -n | cut -d' ' -f2-

La capture d'écran ci-dessous est la sortie pour l'utilisation de la chaîne de commande ci-dessus.

D'un point de vue analytique, l'écran inférieur de la sortie de la commande représente les éléments récemment modifiés dans votre répertoire de travail parent. La liste de sortie peut être longue, selon les fichiers et dossiers que vous avez sur votre machine. Faire défiler vers le haut sur le terminal de sortie révèle les anciens fichiers et les modifications de dossier. En résumé, nous avons une sortie qui classe les plus anciennes modifications de fichiers et de dossiers par rapport aux modifications les plus récentes.

Comme vous l'avez remarqué, la chaîne de commande ci-dessus que vous avez collée sur votre terminal comporte trois arguments de commande importants. Nous devons comprendre ce que chacun d'eux fait.

Rechercher

La commande "find" est la première à être exécutée à partir de la chaîne de commande. Il a pour seul objectif de répertorier de manière récursive les fichiers et répertoires actifs de votre répertoire de travail parent. Le "." L'argument qui suit l'argument "find" pointe cette commande vers le répertoire de travail actuel. Si vous n'êtes pas sûr du répertoire dans lequel vous vous trouvez; vous pouvez saisir la commande "pwd" sur votre terminal. Il affichera le chemin d'accès au répertoire dans lequel vous vous trouvez actuellement.

Le "." L'argument est traduit comme la sortie de la commande "pwd". Il facilite la recherche des fichiers et des répertoires de votre répertoire de travail actuel. Le prochain argument de la chaîne de commande est "-printf". C'est un drapeau pour un argument d'impression. Il imprime les fichiers et répertoires de votre répertoire de travail actuel dans un format spécifié. Le format qu'il prend est spécifié par l'argument "%T@%t%p\n". C'est l'argument de la commande qui le suit immédiatement.

La partie '%T@' de cet argument représente l'heure de l'époque. Par définition, l'heure d'époque ou l'époque Unix est l'horodatage du 1er janvier 1970. Il est représenté par 00:00:00 UTC. La sortie sur votre terminal prend ce format pour représenter les dates de modification associées aux fichiers et répertoires répertoriés. La partie '%t' de l'argument prend maintenant le format d'heure d'époque pour afficher le dernier horodatage de modification associé aux fichiers et répertoires répertoriés.

En fonction de votre distribution ou saveur Linux, la sortie du terminal peut ne pas afficher l'heure d'époque associée à la liste de sortie des fichiers modifiés. Cette déclaration est la preuve de la sortie de ma fin.

La partie '%p' de l'argument affiche les noms des fichiers affichés sur ce répertoire de travail actuel. Enfin, la partie "/n" de l'argument sert de caractère de nouvelle ligne. Après chaque listage successif d'un fichier modifié, ce caractère de retour à la ligne prend le curseur d'affichage et saute l'affichage du fichier suivant à une nouvelle ligne sur l'écran du terminal. Cela nous permet d'associer plus facilement chaque fichier affiché différemment.

Une autre approche pour travailler avec la chaîne de commande indiquée précédemment consiste à remplacer la partie '%t' de l'argument "%T@%t%p\n" par '%c'. La chaîne de commande résultante doit ressembler à ce qui suit :

$ find . -printf '%T@ %c %p\n' | sort -k 1 -n | cut -d' ' -f2-

La sortie de l'exécution de cette chaîne de commande devrait produire une sortie similaire à la capture d'écran suivante.

L'observation de la capture d'écran ci-dessus révèle vivement l'observation suivante. La liste de sortie des fichiers sur le répertoire de travail courant est affichée avec une "heure de dernier changement d'état" au lieu de "l'heure de modification". C'est l'effet du remplacement de '%c' par '%t' dans "%T@%t%p\n". Cette dernière commande imprime les modifications d'autorisation associées à la liste de fichiers générée. Le contenu des fichiers peut ne pas changer, mais les métadonnées qui leur sont associées changent.

À ce stade, les résultats de sortie ne suivent aucun ordre chronologique car nous n'avons pas encore répondu à la commande de tri. L'horodatage de modification est d'abord imprimé, suivi du nom du fichier associé.

Trier

Cet argument de commande a trois paramètres, à savoir '-k', '1' et 'n'. La commande de tri est responsable de l'ordre dans lequel la sortie de la liste de fichiers apparaît sur nos écrans. Dans ce cas, la date de modification est imprimée en premier, suivie du chemin d'accès au fichier ou au répertoire modifié. La partie '-k' de cet argument de commande indique la position de départ pour commencer le processus de tri.

La partie "-k" de l'argument de la commande de tri possède une question à laquelle répond la partie "1" du même argument. Dans ce cas, le processus de tri commence à partir de la première colonne comme indiqué par "1". L'argument de la commande sort est également responsable du fait que le fichier modifié le plus récent se trouve en bas de la liste et le plus ancien en haut. La partie "-n" de l'argument est responsable de la valeur numérique du temps avec une précision décimale.

Si vous utilisez '-nr' au lieu de '-n', la sortie de la chaîne de commande aura les fichiers et répertoires nouvellement modifiés en haut de la sortie du terminal et les anciennes modifications de fichiers en bas. Il inverse l'ordre de tri de la sortie du terminal.

Coupez

Le but principal de l'argument de commande "couper" est d'organiser la sortie de l'impression de notre terminal de manière ordonnée. Les options '-d' et ' ' de cet argument de commande se combinent pour générer des espaces blancs, puis coupent l'impression des détails du contenu du fichier qui pourraient tenter de remplacer ces espaces blancs.

Avec cette simple chaîne de commande, vous pouvez imprimer récursivement les fichiers de votre répertoire de travail courant, chaque sortie liant lesdits fichiers à leurs dates de modification.

Options de commande alternatives

Vous pourriez dire que la commande "ls -lrt" répertorie parfaitement tous les fichiers dans un chemin de répertoire actif sur votre système d'exploitation Linux, du plus ancien à modifier au plus récent. D'autre part, cette commande ne considère pas le contenu du fichier existant dans les sous-dossiers. Si la liste des sous-répertoires n'est pas votre objectif, vous pouvez ajouter l'argument "-type f" à la chaîne de commande. Considérez la modification suivante de la commande.

$ find . -type f -printf '%T@ %t %p\n' | sort -k 1 -n | cut -d ' ' -f2-

L'utilisation de l'argument de commande "-type d" aura un effet opposé à la commande ci-dessus. Votre terminal n'affichera que les répertoires modifiés du plus ancien au plus récent. Considérez son implication comme suit :

$ find . -type d -printf '%T@ %t %p\n' | sort -k 1 -n | cut -d ' ' -f2-

Remarque finale

Vous êtes maintenant familiarisé avec la procédure pas à pas d'impression récursive de fichiers et de répertoires sur votre répertoire de travail actuel avec la connaissance supplémentaire de savoir quand ils ont été modifiés pour la dernière fois en fonction de leurs horodatages associés.

À partir de cette connaissance, vous avez la capacité de composer une chronologie des événements qui révèle chronologiquement l'ordre de modification des fichiers et des répertoires ainsi que le chemin vers leur emplacement de stockage.


Linux
  1. Comment rechercher et trier des fichiers en fonction de la date et de l'heure de modification sous Linux

  2. Comment rechercher et supprimer des répertoires de manière récursive sous Linux

  3. Linux - Obtenir des fichiers pour la date actuelle sous Linux ?

  4. Comment trouver tous les fichiers épars sous Linux

  5. Comment lister tous les fichiers d'une partition sous Linux ?

Comment rechercher et supprimer des fichiers en double sous Linux

Comment rechercher des fichiers avec la commande fd sous Linux

Comment trouver des fichiers en double sous Linux et les supprimer

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

Comment trouver la date et l'heure d'installation du système d'exploitation Linux

Comment trouver la liste des référentiels installés sous Linux