L'une des principales raisons de la popularité mondiale dont jouissent aujourd'hui les systèmes Linux et BSD est leurs outils et utilitaires par défaut. Linux offre certaines des meilleures méthodes de recherche et d'accès aux fichiers directement à partir de la ligne de commande. La commande find sous Linux est l'un de ces utilitaires qui permet aux utilisateurs de Linux de rechercher efficacement dans leur système des types de fichiers particuliers. Il s'agit d'un utilitaire de ligne de commande qui permet de puissantes fonctionnalités de recherche et peut être un outil convaincant entre les mains des utilisateurs chevronnés. Si vous souhaitez maîtriser la commande find en détail et accélérer vos compétences Linux, vous êtes au bon endroit.
Exemples quotidiens de commande Find sous Linux
Nous pensons que la meilleure façon d'apprendre les commandes Linux est de les essayer vous-même. Les commandes présentées ci-dessous devraient fonctionner correctement sur toutes les distributions Linux malgré votre environnement de bureau. Ainsi, vous pouvez rapidement essayer une commande de recherche sous Linux en ouvrant un terminal à l'aide de Ctrl + T et en copiant-collant les commandes à partir d'ici. Essayez d'utiliser autant que possible ces commandes dans votre informatique quotidienne pour les maîtriser en peu de temps.
Structure de la commande Rechercher
La commande find sous Linux a la structure ci-dessous.
trouver [chemins] [expression] [actions]
Ici, les chemins indiquent le répertoire dans lequel vous ne « trouverez » pas pour rechercher les fichiers spécifiés. L'expression vous permettra de filtrer vos fichiers en fonction de certains critères tandis que les actions vous permettront d'exécuter des commandes shell sur des fichiers. L'action par défaut est print, qui imprime simplement les fichiers correspondant à l'expression dans n'importe quel chemin. Find affiche les fichiers de manière récursive, ce qui signifie qu'il parcourra d'abord chaque répertoire, puis imprimera les résultats en conséquence.
Commandes Linux de recherche de base
Vous pouvez utiliser certaines commandes de recherche de base pour avoir une idée de ce que peut faire la recherche. Ces commandes sont assez simples et ne nécessitent aucune expérience préalable avec d'autres utilitaires de ligne de commande.
1. Répertorier tous les fichiers présents dans le répertoire actuel
$ trouver
- -Cela imprimera tous les fichiers présents dans le répertoire courant. Si le répertoire courant contient des répertoires supplémentaires, il les affichera également. Cette commande est équivalente à la commande
$ find -print.
2. Répertorier tous les fichiers présents dans un répertoire spécifique
$ rechercher /dossier
Cette commande imprimera tous les fichiers présents dans le répertoire /dossier . Vous pouvez utiliser cette commande pour répertorier tous les fichiers d'un chemin spécifique dans votre système Linux.
3. Rechercher un fichier spécifique
$ find -name test.txt
Cette commande recherche un fichier nommé test.txt dans votre répertoire courant et dans tous les autres sous-répertoires. Utilisez cette commande lorsque vous recherchez des fichiers spécifiques.
4. Rechercher un fichier spécifique dans un répertoire
$ find /Docs -nom test.txt
Cette commande recherchera le fichier nommé test.txt dans le dossier appelé /Docs . Vous pouvez utiliser à la fois des chemins absolus et des chemins relatifs lors de l'utilisation de cette commande.
5. Rechercher un fichier dans plusieurs répertoires
$ find /opt /usr /var -name foo.scala -type f
Vous pouvez utiliser la commande Linux find lors de la recherche d'un fichier dans plusieurs répertoires en même temps. Mettez simplement les noms de répertoires les uns après les autres suivis d'un espace lors de la recherche.
6. Rechercher un cas ignorant le fichier
$ find -iname test.txt
Cette commande recherchera le fichier test.txt sans correspondre au cas. Donc, si vous avez deux fichiers appelés test.txt et Test.txt , il affichera les deux fichiers. L'option -iname permet à la commande find de faire cela.
7. Rechercher des dossiers dans le répertoire actuel
$ find -type d
Cette commande listera tous les répertoires que vous avez sous votre répertoire de travail actuel. Vous pouvez ajouter l'option de nom pour répertorier des répertoires spécifiques.
8. Rechercher un dossier spécifique dans un répertoire
$ find /home -type d -name users
Cette commande recherchera un dossier appelé utilisateurs dans /home annuaire. Vous pouvez ajouter l'option -iname au lieu de -name pour rechercher sans respecter la casse.
9. Rechercher des fichiers PHP en utilisant le nom
$ find -type f -name test.php
Cette commande listera le fichier PHP appelé test.php présent dans le répertoire de travail courant.
10. Rechercher tous les fichiers PHP
$ find -type f -name "*.php"
Cette commande de recherche sous Linux imprimera tous les fichiers PHP que vous avez dans votre répertoire de travail actuel. Vous pouvez ajouter l'option de chemin avant le type pour lister les fichiers PHP présents uniquement dans un répertoire spécifique.
11. Rechercher tous les liens symboliques
$ find /usr -type l
La commande ci-dessus recherchera tous les liens symboliques que vous avez dans votre répertoire actuel et les imprimera en conséquence.
12. Rechercher des fichiers avec différentes extensions
$ trouver . -type f \( -name "*cache" -o -name "*xml" -o -name "*html" \)
La commande find ci-dessus recherche les fichiers nommés cache avec différentes extensions. Vous pouvez rechercher des extensions supplémentaires en ajoutant l'option de nom suivie de l'indicateur -o.
Rechercher des fichiers en fonction de l'autorisation
La commande find permet aux utilisateurs Linux de rechercher des fichiers en fonction de leur statut d'autorisation. Cela sera utile lorsque votre système compte plusieurs utilisateurs et que vous devez vous assurer que personne n'a accès à vos données sans autorisation.
13. Rechercher les fichiers disposant d'un ensemble d'autorisations 777
$ find -type f -perm 0777 -print
Cette commande listera tous les fichiers du répertoire de travail actuel dont l'autorisation est définie sur 777. Ce sont les fichiers que tout utilisateur peut lire, écrire et exécuter.
14. Rechercher des fichiers sans autorisations 777
$ trouve / -type f ! -perm 777
Cette commande de recherche sous Linux ne recherchera que les fichiers dont les autorisations ne sont pas définies sur 777. Vous pouvez remplacer / par n'importe quel autre emplacement pour affiner vos résultats de recherche.
15. Trouver des fichiers SGID avec 644 autorisations
$ find / -perm 2644
Cette commande de recherche ne recherchera que les fichiers SGID dont le statut d'autorisation est défini sur 644. Les fichiers SGID permettent un accès temporaire aux fichiers que vous ne possédez pas ou auxquels vous n'avez pas accès.
16. Rechercher tous les fichiers Sticky Bit avec 551 autorisations
$ find / -perm 1551
Les fichiers Sticky Bit sont un ensemble de fichiers ou de dossiers qui ne peuvent être renommés ou supprimés que par l'utilisateur qui les a créés ou par l'utilisateur root. Cette commande affichera tous les fichiers Sticky Bit de votre système avec 551 autorisations.
17. Rechercher tous les fichiers SUID
$ find / -perm /u=s
Les fichiers SUID permettent la propriété temporaire d'un groupe de fichiers à des utilisateurs autres que le propriétaire du groupe de fichiers ou l'utilisateur root. Cette commande de recherche listera tous les fichiers SUID que vous avez sur votre machine Linux actuelle.
18. Rechercher tous les fichiers SGID
$ find / -perm /g=s
Les fichiers SGID sont similaires aux fichiers SUID à bien des égards, sauf que lorsque des fichiers avec des autorisations SGID sont exécutés, l'exécution a lieu comme si le propriétaire d'origine exécutait le processus. Cette commande de recherche répertorie tous les fichiers SGID, quel que soit leur statut d'autorisation.
19. Rechercher des fichiers en lecture seule
$ find / -perm /u=r
Les fichiers en lecture seule interdisent aux utilisateurs de Linux d'y écrire ou de les exécuter. Ils ne peuvent être écrits ou exécutés que par le propriétaire des fichiers ou l'utilisateur root. Cette commande de recherche affichera tous les fichiers en lecture seule que votre machine possède actuellement.
20. Rechercher tous les fichiers exécutables
$ find / -perm /a=x
Les fichiers exécutables sont simplement des fichiers exécutables tels que des fichiers binaires. La "commande de recherche" Linux ci-dessus recherchera dans le système chacun de ces fichiers et les listera en conséquence.
21. Trouver tous les fichiers avec 777 autorisations et chmod à 644
$ find / -type f -perm 0777 -print -exec chmod 644 {} \;
La commande find ci-dessus recherche tous les fichiers auxquels est associée l'autorisation 777 et modifie leur statut d'autorisation en 644 à l'aide de la commande chmod. Vous seul pouvez maintenant lire ou écrire dans les fichiers avec l'autorisation 644.
22. Trouver tous les répertoires avec 777 autorisations et chmod à 755
$ find / -type d -perm 777 -print -exec chmod 755 {} \;
Cette commande de recherche Linux recherchera tous les répertoires disposant d'une autorisation 777 et modifiera leur statut d'autorisation en 755. Ce que cela fait, en substance, est d'autoriser les autorisations complètes uniquement pour le propriétaire et l'autorisation de lecture et d'exécution pour les autres utilisateurs.
Rechercher des fichiers spécifiques à l'aide de la recherche
Find peut être utilisé pour rechercher des fichiers spécifiques de manière assez efficace. Vous pouvez utiliser rechercher pour sélectionner des fichiers en fonction de certains critères et effectuer des opérations de shell comme la suppression de fichiers sur eux.
23. Rechercher un fichier et le supprimer
$ find -type f -name "test.txt" -exec rm -f {} \;
Cette commande Linux "find" est utilisée lorsque vous devez supprimer un fichier d'une liste de nombreux fichiers. Dans ce cas, il trouve d'abord le fichier appelé test.txt dans le répertoire courant et le supprime en utilisant rm-f.
24. Rechercher plusieurs fichiers et les supprimer simultanément
$ find -type f -name "*.mp3" -exec rm -f {} \;
La commande Rechercher est utile pour rechercher de grands tableaux de types de fichiers spécifiques et les supprimer immédiatement. La commande ci-dessus recherche votre système pour .mp3 fichiers et les supprime sans aucune invite. Vous pouvez ajouter l'indicateur interactif -i avec la partie rm pour obtenir une invite chaque fois qu'une suppression se produit.
25. Rechercher tous les fichiers vides dans le système
$ find /tmp -type f -empty
Les fichiers vides peuvent monopoliser les ressources de votre système en très peu de temps. Utilisez la commande ci-dessus pour répertorier tous les fichiers vides à l'aide de la commande find. Vous pouvez supprimer ces fichiers en ajoutant -exec rm -f {} \; tout comme la commande ci-dessus.
26. Rechercher tous les dossiers vides dans le système
$ find /tmp -type d -empty
Cette commande listera tous les dossiers vides résidant dans /tmp annuaire. Vous pouvez l'utiliser pour rechercher des dossiers vides dans n'importe quel autre répertoire et pouvez également les supprimer si vous le souhaitez, comme vous l'avez fait précédemment.
27. Rechercher tous les dossiers cachés dans le système
$ find /home -type f -name ".*"
Les dossiers cachés sont généralement préfixés par un seul point (.) dans les systèmes Linux. Utilisez la commande ci-dessus pour répertorier tous les dossiers cachés que vous avez dans votre répertoire /home.
Rechercher des fichiers en fonction de l'utilisateur
La commande Rechercher est également utile pour rechercher des fichiers en fonction des groupes d'utilisateurs. Vous pouvez rechercher des fichiers spécifiques pour certains groupes d'utilisateurs et modifier très rapidement les autorisations de fichiers à l'aide des commandes de recherche Linux.
28. Rechercher un fichier appartenant à l'utilisateur
$ find / -user root -name test.txt
Vous pouvez utiliser la commande find sous Linux pour rechercher un seul fichier appartenant à un utilisateur spécifique. La commande ci-dessus recherche un fichier appelé test.txt dans le / répertoire qui appartient à l'utilisateur root.
29. Rechercher tous les fichiers appartenant à l'utilisateur
$ find /home -nom d'utilisateur
La commande Linux ci-dessus recherche tous les fichiers du répertoire /home appartenant à l'utilisateur "nom d'utilisateur". Vous devrez remplacer "nom d'utilisateur" avec votre nom d'utilisateur Linux pour trouver tous les fichiers qui vous appartiennent.
30. Rechercher tous les fichiers appartenant à un groupe
$ find /home -group programmer
Les fichiers Linux appartiennent généralement à certains groupes. La commande Linux ci-dessus vous permet de rechercher tous les fichiers appartenant à un groupe particulier appelé "programmer" et les imprime dans le terminal. Remplacez "programmeur" par le nom du groupe que vous souhaitez rechercher.
31. Rechercher des fichiers spécifiques pour un utilisateur
$ find /home -user bob -iname "*.txt"
Vous pouvez utiliser la commande find pour rechercher des fichiers spécifiques appartenant à un utilisateur. La commande ci-dessus le fait et répertorie tous les fichiers .txt appartenant à l'utilisateur bob. Remplacez bob par votre nom d'utilisateur et .txt avec tout autre type de fichier pour trouver des fichiers d'un certain type qui vous appartiennent.
Rechercher des fichiers en fonction de l'heure
Find permet également aux administrateurs système de surveiller efficacement leur système. Il permet de rechercher des fichiers en fonction de l'heure de modification, de l'heure d'accès, etc.
32. Rechercher tous les fichiers qui ont été modifiés au cours des 50 derniers jours
$ trouver / -mtime 50
La commande find permet aux utilisateurs de rechercher des fichiers qui ont été modifiés dans un délai donné. La commande ci-dessus imprimera tous les fichiers de votre système, qui ont été modifiés il y a 50 jours.
33. Rechercher tous les fichiers consultés au cours des 50 derniers jours
$ trouver / -atime 50
L'option -atime affiche les fichiers auxquels on a accédé dans un délai défini. La commande ci-dessus répertorie tous les fichiers de votre système qui ont été consultés il y a 50 jours.
34. Rechercher tous les fichiers modifiés au cours des 50 à 100 derniers jours
$ trouver / -mtime +50 –mtime -100
La commande find sous Linux permet aux utilisateurs de rechercher tous les fichiers modifiés dans une plage de temps donnée. L'opérateur + et - est utilisé en conjonction avec -mtime pour ce faire. La commande ci-dessus trouve tous les fichiers que vous avez modifiés au cours des 50 à 100 derniers jours.
35. Rechercher tous les fichiers modifiés au cours de la dernière heure
$ trouver / -cmin -60
Cette commande trouvera et listera tous les fichiers qui ont été modifiés au cours de la dernière heure. Vous pouvez remplacer / par un répertoire spécifique pour affiner vos recherches. Remplacez 60 par n'importe quel autre nombre comme 120 pour trouver les fichiers qui ont été modifiés pendant ce temps (2 heures pour 120).
36. Rechercher tous les fichiers modifiés au cours de la dernière heure
$ trouver / -mmin -60
La commande ci-dessus affichera tous les fichiers qui ont été modifiés au cours de la dernière heure. Remplacez 60 par n'importe quel autre nombre pour modifier le délai requis par votre objectif.
37. Rechercher tous les fichiers consultés au cours de la dernière heure
$ trouver / -amin -60
Cette commande affiche tous les fichiers auxquels vous avez accédé au cours de la dernière heure. Comme pour les deux commandes précédentes, n'hésitez pas à modifier 60 pour obtenir le résultat souhaité.
Rechercher des fichiers en fonction de leur taille
Parfois, vous devrez rechercher des fichiers en fonction de leur taille. Find est également utile à cet égard. Vous pouvez ajouter différentes options pour rechercher plus précisément les fichiers en fonction de leur taille.
38. Rechercher des fichiers de taille 50 Mo
$ trouver / -taille 50M
Cette "commande de recherche" sous Linux imprime tous les fichiers dont la taille dépasse 50 Mo. Remplacer / avec votre répertoire souhaité et 50M avec toute autre taille pour affiner vos résultats de recherche plus efficacement.
39. Rechercher tous les fichiers de plus de 100 Mo
$ trouver / -taille +100M
La commande ci-dessus répertoriera tous les fichiers que vous avez au-delà de la barre des 100 Mo dans votre / annuaire. Vous pouvez changer 100 Mo avec d'autres tailles de fichiers pour obtenir le résultat souhaité.
40. Rechercher des fichiers entre 50 Mo et 100 Mo
$ trouver / -taille +50M -taille -100M
Parfois, vous devrez rechercher des fichiers dans une plage de taille spécifiée. La commande ci-dessus affichera tous les fichiers dont vous disposez entre 50 Mo et 100 Mo. Modifiez les paramètres facultatifs pour correspondre à des critères de recherche spécifiques.
41. Supprimer tous les fichiers de plus de 500 Mo
$ find /Movies -size +500M -exec rm -rf {} \;
La commande find est utile pour rechercher des fichiers au-delà d'une limite spécifique et les supprimer instantanément du terminal. Supposons que vous ayez de vieux films qui traînent dans un dossier et que vous souhaitiez les supprimer d'un seul coup. La commande ci-dessus vous permettra de faire précisément cela. Assurez-vous de remplacer /Movies avec le nom du dossier où résident vos fichiers.
42. Rechercher les fichiers les plus volumineux
$ trouver . -type f -exec ls -s {} \; | trier -n -r | tête -5
La commande de recherche ci-dessus imprimera les 5 fichiers les plus volumineux que vous avez dans votre répertoire de travail actuel et dans ses sous-répertoires.
43. Rechercher les plus petits fichiers
$ trouver . -type f -exec ls -s {} \; | trier -n | tête -5
Vous pouvez également utiliser la commande find sous Linux pour afficher les plus petits fichiers. Cette commande imprime les 5 plus petits fichiers que vous avez sous votre répertoire actuel.
Commandes de recherche diverses
La commande find de Linux offre de nombreuses fonctionnalités supplémentaires telles que la recherche de fichiers en fonction du texte qu'ils contiennent, la recherche et la suppression de fichiers, la recherche de fichiers en fonction de modèles, etc. Les commandes ci-dessous illustrent brièvement certaines de ces capacités.
44. Rechercher et supprimer des fichiers spécifiques
$ find / -type f -name *.mp3 -size +10M -exec rm {} \;
Cette "commande de recherche" Linux permet aux utilisateurs de trouver tous les fichiers .mp3 de leur système qui occupent plus de 10 Mo d'espace et de les supprimer. Vous pouvez remplacer .mp3 par n'importe quel autre type de fichier et le paramètre de taille pour des types de fichiers spécifiques.
45. Rechercher les fichiers qui ne correspondent pas à un modèle
$ find /home -type f -not -name "*.html"
La commande find ci-dessus sous Linux recherchera tous les fichiers dans /home répertoire qui ne se termine pas par .html. L'option -not permet à "find" de faire cela.
46. Rechercher des fichiers par texte dans le fichier
$ trouver . -type f -name "*.java" -exec grep -l StringBuffer {} \;
Vous pouvez utiliser grep pour rechercher des fichiers en fonction du texte qu'ils contiennent. La "commande de recherche" Linux ci-dessus recherche .java fichiers contenant StringBuffer à l'intérieur. L'ajout de l'indicateur -i à grep fera que cette recherche ignorera la casse.
47. Rechercher et copier des fichiers
$ trouver . -type f -name "*.mp3" -exec cp {} /home/MusicFiles \;
Find peut être utilisé pour trouver certains fichiers et les copier vers un nouvel emplacement. La commande ci-dessus trouve tous les fichiers .mp3 dans le répertoire actuel et les copie dans le dossier /home/MusicFiles .
48. Rechercher et déplacer des fichiers
$ trouver . -type f -name "*.jpg" -exec cp {} /home/Images \;
Find peut également être utilisé pour déplacer efficacement des fichiers. La commande ci-dessus recherche tous les fichiers .jpg que vous avez sous votre répertoire actuel et les déplace vers le répertoire /home/Pictures .
49. Rechercher et tarer les fichiers
$ trouver . -type f -nom "*.java" | xargs tar cvf monfichier.tar
Vous pouvez utiliser find pour rechercher des fichiers spécifiques et les archiver dans des archives tar. La commande ci-dessus trouve tous les fichiers .java dans le répertoire courant et les compresse dans un fichier tar appelé myfile.tar .
50. Filtrage des messages d'erreur
$ find [chemins] [expression] [actions] 2>/dev/null
Parfois, vous pouvez être confronté à des erreurs telles que « Autorisation refusée » ou autre chose en essayant certaines commandes de recherche. Vous pouvez rediriger ces erreurs vers /dev/null , comme indiqué ci-dessus.
Fin des pensées
La commande find sous Linux est l'un des outils de ligne de commande les plus utiles que vous puissiez utiliser pour une surveillance efficace de votre système ou un traitement fréquent des fichiers. Les implémentations intelligentes de diverses "commandes de recherche" feront de vous un utilisateur expérimenté de Linux en un rien de temps. Nos éditeurs ont fait de leur mieux pour décrire les commandes de recherche les plus utiles pour votre utilisation quotidienne. Utilisez ces commandes dans votre informatique quotidienne pour tirer le meilleur parti de votre système Linux.