Maison > Tutoriel système > Linux > Comment trouver un répertoire dans Linux à partir de la ligne de commande

Comment trouver un répertoire dans Linux à partir de la ligne de commande

Lisa Kudrow
Libérer: 2025-03-18 09:07:11
original
925 Les gens l'ont consulté

Comment trouver un répertoire dans Linux à partir de la ligne de commande

Vous ne trouvez pas de dossier dans le système Linux? Ne vous inquiétez pas! Linux fournit des outils de ligne de commande puissants pour trouver des répertoires manquants. L'outil le plus courant est la commande find , qui vous permet de rechercher des répertoires en fonction de divers critères. Ce guide introduira plusieurs façons de trouver des répertoires dans les systèmes Linux.

Tout d'abord, nous montrerons comment rechercher le répertoire par leur nom. Nous montrerons ensuite comment trouver les répertoires les plus récemment modifiés et ceux modifiés au cours des N les derniers jours. Vous apprendrez également à identifier les répertoires plus anciens - ceux-ci modifiés il y a n jours.

Ensuite, nous expliquerons comment rechercher un répertoire dans une plage de profondeur spécifiée à l'aide des options maxdepth et mindepth . Vous apprendrez à trouver des répertoires en fonction des autorisations pour les répertoires et répertoires qui contiennent un nombre spécifique de fichiers.

Enfin, nous expliquerons comment rechercher des répertoires vides, ce qui est très utile pour identifier les parties inutilisées ou inutiles du système de fichiers.

Tout au long du guide, nous fournirons des exemples pratiques pour vous aider à profiter de la commande find lorsque vous utilisez des répertoires dans Linux.

Table des matières

  • Recherchez le répertoire dans le répertoire actuel
  • Utiliser -iname pour ignorer le cas
  • Rechercher des répertoires et des fichiers
  • Trouvez le répertoire récemment modifié
  • Trouver des répertoires modifiés au cours des N les derniers jours
  • Identifier les répertoires plus anciens
  • Recherchez le répertoire dans la plage spécifiée
  • Trouver le répertoire basé sur les autorisations de répertoire
  • Trouver des répertoires contenant un nombre spécifique de fichiers
  • Rechercher un répertoire vide
  • Résumer

Recherche par nom de répertoire

Si vous connaissez le nom du répertoire et où la recherche démarre, utilisez la commande suivante:

 find / path / to / search -Type d -Name "Directory_name"
Copier après la connexion

Remplacer /path/to/search par le chemin réel et "directory_name" par le répertoire cible.

Exemple:

 $ trouver ~ / -Type d -name "documents"
Copier après la connexion

Cette commande commence à rechercher un répertoire nommé "Documents" du répertoire personnel de l'utilisateur (~ /).

Voici une ventilation des commandes:

  1. find ~/ : Commencez à rechercher dans le répertoire personnel de l'utilisateur (~ /).
  2. -type d : Dites find pour rechercher des répertoires (-type d) au lieu de fichiers normaux.
  3. -name "Documents" : Cette option indique à find un répertoire nommé "Documents". Les citations des deux côtés des "documents" garantissent que la recherche recherche des noms exacts, pas seulement des répertoires contenant le mot "documents".

Par conséquent, cette commande recherchera le répertoire personnel de l'utilisateur et tous ses sous-répertoires pour tout répertoire nommé "Documents". Si des répertoires sont trouvés, il imprimera le chemin complet vers ces répertoires.

Recherchez le répertoire dans le répertoire actuel

Si vous souhaitez démarrer votre recherche à partir du répertoire actuel au lieu du répertoire domestique (~ /), vous pouvez simplement omettre la ~ / partie de la commande comme suit:

 $ trouver.
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Voici une ventilation des fonctionnalités de chaque option:

  1. find . .
  2. -type d : Dites find pour rechercher le répertoire.
  3. -name "Documents" : Cette option indique à find un répertoire nommé "Documents".

Cette commande recherchera dans le répertoire actuel et tous ses sous-répertoires, trouvera n'importe quel répertoire nommé "Documents" et impriment le chemin complet de ces répertoires.

Alternativement, vous pouvez également utiliser la variable $PWD , qui représente le répertoire de travail actuel comme suit:

 $ trouver $ pwd -Type d -name "documents"
Copier après la connexion

Les deux commandes obtiendront le même résultat, en commençant par le répertoire actuel.

Utiliser -iname pour ignorer le cas

Il s'agit d'un drapeau très utile dans la commande find .

Nous pouvons utiliser l'option -iname au lieu de -name pour effectuer des recherches insensibles à des cas .

Voici un exemple d'utilisation -iname au lieu de -name :

 $ trouver.
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

-iname "Documents" L'option correspondra aux répertoires avec des noms tels que "documents", "documents", "documents", etc. Ceci est utile si vous n'êtes pas sûr du cas exact du nom du répertoire.

La principale différence entre -name et -iname est:

  • -name effectue des recherches sensibles à la casse, il ne correspondra donc que des répertoires qui sont exactement le même cas que le modèle fourni.
  • -iname effectue des recherches insensibles à des cas, il correspondra donc au répertoire quel que soit son cas.

Vous pouvez également inclure des termes de recherche dans des caractères génériques comme celui-ci:

 $ trouver.
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Cette commande répertorie tous les répertoires du répertoire actuel (et ses sous-répertoires) qui contiennent des "documents" dans leurs noms.

Utiliser -iname peut être plus pratique si vous ne savez pas ou ne vous souciez pas du cas exact du nom de répertoire que vous recherchez.

Personnellement, lors de la recherche de quelque chose, je préfère utiliser l'option -iname dans la commande find .

Rechercher des répertoires et des fichiers

Si vous supprimez -type d de la commande find , elle recherchera des fichiers et des répertoires qui correspondent à d'autres critères tels que -name ou -iname .

La commande est la suivante:

 $ trouver. -iname "documents"
Copier après la connexion

Voici ce qui se passe:

  1. La commande find recherchera le répertoire actuel (.) Et toutes ses sous-répertoires pour tout projet (fichiers et répertoires) nommés "documents" (cas insensible).
  2. Il contiendra un répertoire nommé "Documents" et tout fichier normal nommé "Documents" dans le résultat.

Par conséquent, la sortie de cette commande comprendra:

  • Tout répertoire nommé "documents", "documents", "documents", etc.
  • Tout fichier normal nommé "documents", "documents", "documents", etc.

La suppression de -type d rendra la recherche plus large car elle contiendra des répertoires et des fichiers qui correspondent au modèle de nom spécifié.

Ceci est utile si vous ne savez pas si l'entrée "Documents" que vous recherchez est un répertoire ou un fichier, et que vous souhaitez trouver tous les événements.

Cependant, si vous recherchez spécifiquement des répertoires nommés "Documents", il est préférable de garder -type d pour affiner votre recherche.

Trouvez le répertoire récemment modifié

Pour répertorier les répertoires modifiés dans une plage de dates spécifique, utilisez -newermt deux fois.

Par exemple, pour rechercher des répertoires créés ou modifiés entre le 15 mars 2024 et le 15 avril 2024 (à l'exclusion de ces deux jours), vous pouvez utiliser:

 $ Find / Path / To / Search -Type D -newermt "2024-03-15"! -newermt "2024-04-15"
Copier après la connexion

Voici une ventilation des commandes ci-dessus:

  1. find /path/to/search : dites à la commande find pour commencer à rechercher dans /path/to/search .
  2. -type d : Cette option garantit que find ne recherche que des répertoires, pas des fichiers ordinaires.
  3. -newermt "2024-03-15" : Cette option indique find uniquement des répertoires mis à jour (créés ou modifiés) que le 15 mars 2024.
  4. ! find ! -newermt "2024-04-15" !

La combinaison de ces options entraîne la création ou la modification find le 15 mars 2024, mais avant le 15 avril 2024.

Par exemple, cela peut être utile si vous souhaitez trouver tous les répertoires créés ou modifiés dans une période spécifique (par exemple, pour la sauvegarde ou l'audit).

Trouver des répertoires modifiés au cours des N les derniers jours

Pour trouver des répertoires qui ont été modifiés au cours des N les derniers jours, utilisez -mtime .

La commande suivante recherchera le répertoire modifié au cours des 7 derniers jours dans le cadre du répertoire ~ / projets /.

 $ trouver ~ / projets / -Type d -mtime -7
Copier après la connexion

Voici ce que fait chaque partie de la commande:

  1. find ~/Projects/ : Dites à la commande find pour commencer à rechercher à partir du répertoire ~ / projets /.
  2. -type d : Cette option garantit que find ne recherche que des répertoires, pas des fichiers ordinaires.
  3. -mtime -7 : Cette option indique à find uniquement les répertoires qui ont été modifiés au cours des 7 derniers jours ("m" dans "-mtime" signifie "modifier le temps").

Le principe de travail de -mtime -7 est le suivant:

  • Le signe moins (-) signifie "moins que" ou "dans le passé".
  • Le numéro 7 représente le nombre de jours.

Par exemple, cela sera très utile si vous souhaitez trouver tous les nouveaux répertoires qui ont été récemment créés ou mis à jour dans le ~ / projets / répertoire (peut-être pour la sauvegarde ou le suivi).

Identifier les répertoires plus anciens

Pour trouver un répertoire qui a été modifié il y a n jours (c'est-à-dire (trouver un répertoire il y a n jours), utilisez -mtime avec un signe plus.

Par exemple, la commande suivante recherchera le répertoire modifié il y a 7 jours dans le cadre du répertoire ~ / projets /.

 $ trouver ~ / projets / -ype d -mtime 7
Copier après la connexion

En d'autres termes, il recherchera des répertoires qui n'ont pas été modifiés (créés, mis à jour ou accessibles) au cours des 7 derniers jours.

-mtime 7 indique à find uniquement les répertoires dont le temps de modification ("m" dans "-mtime") est supérieur à 7 jours.

Par conséquent, cette commande peut être utilisée pour trouver des répertoires qui n'ont pas été touchés ou modifiés pendant une période de temps, ce qui est utile pour identifier les répertoires inutilisés ou obsolètes ou effectuer des tâches telles que l'entretien / nettoyage de la structure du répertoire de projet.

Comment savons-nous si le répertoire a été réellement modifié il y a x jours? Très simple.

Pour vérifier que le répertoire trouvé par la commande find a été modifié il y a 7 jours, vous pouvez utiliser la commande stat pour afficher le temps de modification de chaque répertoire.

 $ trouver ~ / projets / -Type d -mtime 7 -exec stat -c '% n% y' {} \;
Copier après la connexion

Ce qui suit est l'explication de la commande ci-dessus:

  1. find ~/Projects/ -type d -mtime 7 : Cette partie de commande est la même qu'auparavant, trouvez le répertoire il y a 7 jours.
  2. -exec stat -c '%n %y' {} \; : Cette section utilise l'option -exec de find pour exécuter la commande stat pour chaque répertoire trouvé.
  • stat -c '%n %y' : stat affiche le nom du fichier (% n) du répertoire et le dernier temps modifié (% y).
  • {} : Il s'agit d'un espace réservé, remplacé par le répertoire actuel trouvé par find .
  • \; -exec

Lorsque vous exécutez cette commande, il affiche le chemin et le dernier temps modifié de chaque répertoire il y a 7 jours. Cela vous permet de vérifier que le répertoire trouvé a été modifié il y a 7 jours.

Voici un exemple de sortie:

 <code>/home/ostechnix/Projects/Python 2024-03-22 14:18:14.958042173 0530 /home/ostechnix/Projects/Vim 2024-03-22 14:05:55.887041168 0530</code>
Copier après la connexion

Le temps de modification indiqué dans la sortie vous aidera à confirmer que le répertoire est en effet supérieur à 7 jours, comme l'exige la commande find Original.

Recherchez le répertoire dans la plage spécifiée

Nous pouvons rechercher le répertoire dans la plage de profondeur spécifiée à l'aide des options maxdepth et mindepth de la commande find .

Ce qui suit est la syntaxe:

 find / path / to / search -Mindepth x -maxdepth y -Type d
Copier après la connexion

Permettez-moi d'expliquer ce que fait chaque option de cette commande:

  1. find /path/to/search : dites à la commande find pour commencer à rechercher dans /path/to/search .
  2. -mindepth X : Cette option définit le niveau de profondeur minimum du répertoire à inclure dans les résultats de recherche. La valeur x représente le nombre minimum de niveaux de répertoire à partir du point de départ.
  3. -maxdepth Y : Cette option définit le niveau de profondeur maximal du répertoire à inclure dans les résultats de recherche. La valeur y représente le nombre maximum de niveaux de répertoire à partir du point de départ.
  4. -type d : Cette option garantit que find ne recherche que des répertoires, pas des fichiers ordinaires.

Notez que l'option -mindepth doit être spécifiée avant d'autres paramètres, y compris -type .

Par exemple, pour rechercher un répertoire au moins 2 couches de profondeur mais jusqu'à 4 couches de profondeur dans le répertoire /Projects , vous pouvez utiliser la commande suivante:

 $ trouver ~ / projets -midepth 2 -maxdepth 4-type d
Copier après la connexion

Cette commande recherche les répertoires (inclus) au moins 2 couches de profondeur et jusqu'à 4 couches de profondeur par rapport au répertoire /Projects .

Vous pouvez ajuster les valeurs de X et Y en fonction de vos besoins spécifiques. Par exemple, si vous souhaitez rechercher un répertoire exactement 3 couches de profondeur, vous pouvez utiliser:

 $ trouver ~ / projets -midepth 3 -maxdepth 3-type d
Copier après la connexion

Cela ne contiendra que des répertoires profonds à 3 couches dans les résultats de recherche.

L'utilisation de maxdepth et mindepth en combinaison peut vous aider à réduire votre recherche à une gamme spécifique de profondeur de répertoire, ce qui est très utile pour organiser et gérer les systèmes de fichiers.

Trouver le répertoire basé sur les autorisations de répertoire

Pour trouver un répertoire basé sur les autorisations du répertoire, vous pouvez utiliser la commande find avec l'option -perm .

 find / path / to / search -Type d -perm<permission_specification></permission_specification>
Copier après la connexion

Remplacer /path/to/search par le répertoire que vous souhaitez commencer à rechercher et<permission_specification></permission_specification> Remplacer par les autorisations requises. Vous pouvez spécifier des autorisations en utilisant la notation octale.

Permettez-moi de vous montrer quelques exemples.

Pour trouver tous les répertoires avec les autorisations 755 (c'est-à-dire que le propriétaire est RWX, le groupe et autres sont RX) dans le répertoire actuel:

 $ Find.
Copier après la connexion
Copier après la connexion

Pour trouver des répertoires où le propriétaire a des autorisations RWX, le groupe a des autorisations RX et d'autres n'ont pas d'autorisations:

 $ Find.
Copier après la connexion
Copier après la connexion

Pour trouver tous les répertoires dans ~ / projets où le propriétaire a des autorisations et des groupes et d'autres ont des autorisations RX:

 $ trouver ~ / projets ~ -Type d -perm -005
Copier après la connexion

Vous pouvez vous ajuster en fonction de vos exigences spécifiques<permission_specification></permission_specification> . De plus, vous pouvez utiliser -maxdepth et -mindepth pour contrôler la profondeur de la recherche si nécessaire.

Trouver des répertoires contenant un nombre spécifique de fichiers

Pour trouver des répertoires contenant un nombre spécifique de fichiers, vous pouvez utiliser find , wc et Bash en combinaison.

Exemple:

La commande suivante recherche des répertoires qui contiennent 4 fichiers dans le répertoire actuel et ses sous-répertoires, et impriment le chemin complet de ces répertoires.

 $ trouver.
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Décomposons la commande étape par étape:

  1. find . -type d
  2. -exec bash -c '...' _ {} \; ;: Cette section utilise l'option find exec pour exécuter des scripts de bases personnalisés pour chaque répertoire trouvé.
  3. if [ $(find "$1" -maxdepth 1 -type f | wc -l) -eq 4 ]; then echo "$1"; fi
  • $(find "$1" -maxdepth 1 -type f | wc -l) : Cette section calcule le nombre de fichiers (pas les répertoires) dans le répertoire actuel ("1 $"). -maxdepth 1 garantit qu'il ne calcule que les fichiers dans le répertoire actuel, et non les fichiers dans le sous-répertoire.
  • [ ... -eq 4 ] : Cela vérifie si le nombre de fichiers dans le répertoire actuel est exactement 4.
  • then echo "$1"; fi

Par exemple, cela serait utile si vous avez un ensemble spécifique de répertoires qui devraient contenir un certain nombre de fichiers et que vous souhaitez identifier rapidement tous les répertoires qui ne répondent pas à ces critères.

Rechercher un répertoire vide

Pour trouver un répertoire vide, utilisez le drapeau -empty :

 find / path / to / search -ype d -Empty
Copier après la connexion

Par exemple, pour rechercher un répertoire vide dans le répertoire "Work", exécutez:

 $ trouver ~ / work / -Type d -Empty
Copier après la connexion

N'oubliez pas d'ajuster le chemin au besoin.

Résumer

Dans ce guide, vous avez appris plusieurs techniques pour rechercher des répertoires dans les systèmes Linux à l'aide de la commande find .

Vous pouvez rechercher par nom, le dernier temps de changement ou par nombre de fichiers internes. Vous pouvez même trouver des dossiers ou des dossiers vides avec des autorisations spécifiques.

En apprenant à utiliser des options telles que maxdepth , mindepth et size , vous pouvez améliorer votre recherche pour vous concentrer sur les répertoires spécifiques dont vous avez besoin.

Par conséquent, ne paniquez pas la prochaine fois que le dossier sera perdu! Utilisez ces commandes find pour le suivre et garder le fichier organisé.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal