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
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"
Remplacer /path/to/search
par le chemin réel et "directory_name"
par le répertoire cible.
Exemple:
$ trouver ~ / -Type d -name "documents"
Cette commande commence à rechercher un répertoire nommé "Documents" du répertoire personnel de l'utilisateur (~ /).
Voici une ventilation des commandes:
find ~/
: Commencez à rechercher dans le répertoire personnel de l'utilisateur (~ /).-type d
: Dites find
pour rechercher des répertoires (-type d) au lieu de fichiers normaux.-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.
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.
Voici une ventilation des fonctionnalités de chaque option:
find .
.
-type d
: Dites find
pour rechercher le répertoire.-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"
Les deux commandes obtiendront le même résultat, en commençant par le répertoire actuel.
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.
-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.
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
.
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"
Voici ce qui se passe:
find
recherchera le répertoire actuel (.) Et toutes ses sous-répertoires pour tout projet (fichiers et répertoires) nommés "documents" (cas insensible).Par conséquent, la sortie de cette commande comprendra:
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.
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"
Voici une ventilation des commandes ci-dessus:
find /path/to/search
: dites à la commande find
pour commencer à rechercher dans /path/to/search
.-type d
: Cette option garantit que find
ne recherche que des répertoires, pas des fichiers ordinaires.-newermt "2024-03-15"
: Cette option indique find
uniquement des répertoires mis à jour (créés ou modifiés) que le 15 mars 2024.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).
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
Voici ce que fait chaque partie de la commande:
find ~/Projects/
: Dites à la commande find
pour commencer à rechercher à partir du répertoire ~ / projets /.-type d
: Cette option garantit que find
ne recherche que des répertoires, pas des fichiers ordinaires.-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:
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).
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
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' {} \;
Ce qui suit est l'explication de la commande ci-dessus:
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.-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>
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.
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
Permettez-moi d'expliquer ce que fait chaque option de cette commande:
find /path/to/search
: dites à la commande find
pour commencer à rechercher dans /path/to/search
.-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.-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.-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
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
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.
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>
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.
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.
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
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.
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.
Décomposons la commande étape par étape:
find . -type d
-exec bash -c '...' _ {} \;
;: Cette section utilise l'option find
exec
pour exécuter des scripts de bases personnalisés pour chaque répertoire trouvé.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.
Pour trouver un répertoire vide, utilisez le drapeau -empty
:
find / path / to / search -ype d -Empty
Par exemple, pour rechercher un répertoire vide dans le répertoire "Work", exécutez:
$ trouver ~ / work / -Type d -Empty
N'oubliez pas d'ajuster le chemin au besoin.
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!