GNU/Linux >> Tutoriels Linux >  >> Linux

Comment rechercher et supprimer des fichiers contenant un texte spécifique dans leurs noms sous Linux

Ce guide explique comment rechercher et supprimer des fichiers qui contiennent un texte ou une chaîne spécifique dans leurs noms en utilisant la commande find sous Linux. De plus, nous apprendrons également comment rechercher et supprimer des fichiers qui "ne sont pas" contenir un texte spécifique dans leurs noms.

Présentation

J'ai de nombreux fichiers PDF qui contiennent des trucs et astuces Linux importants. J'ai donné à ces fichiers un nom de fichier unique pour une identification plus facile.

Supposons, par exemple, que j'ai enregistré les fichiers contenant les détails de configuration du serveur LDAP sous le nom ldapconfig.pdf , Fichier de configuration FTP sous la forme ftpconfig.pdf , les détails de la configuration du serveur DHCP sous la forme dhcp_config.pdf , etc.

J'ai converti la plupart d'entre eux en articles et les ai publiés ici dans notre blog, afin que d'autres utilisateurs puissent également en bénéficier.

Le problème est que ces fichiers consomment beaucoup d'espace disque. Depuis que j'ai des centaines de fichiers, je ne veux pas les rechercher manuellement et les supprimer un par un. Cela peut prendre quelques heures pour trouver et supprimer tous les fichiers.

En cherchant une solution simple, j'ai appris que la commande "trouver" pouvait m'aider dans ce cas. Après avoir parcouru les pages de manuel de la commande find, j'ai trouvé une solution appropriée. Continuez à lire.

1. Rechercher et supprimer des fichiers contenant un texte spécifique dans leurs noms sous Linux

Jetez un oeil à l'exemple suivant. J'ai les fichiers suivants dans un répertoire appelé "Linux_guides" .

$ cd Linux_guides/
$ ls
apache_config.pdf dhcp_config.pdf ldap_config.pdf php_install.pdf
apache_install.pdf ftp_config.pdf mysql_install.pdf

J'ai terminé la partie installation, donc je n'ai pas besoin des fichiers contenant les mots "installer" dans leurs noms de fichiers.

Au lieu de rechercher et de supprimer les fichiers contenant la phrase "installer" un par un, nous pouvons tous les supprimer en une seule fois à l'aide de la commande suivante :

$ find -type f -name '*install*' -delete

La commande ci-dessus supprimera tous les fichiers contenant la phrase "installer" en leur nom et conservez tout le reste.

Si delete n'est pas disponible, vous pouvez utiliser l'une des commandes suivantes :

$ find -type f -name '*install*' -exec rm {} \;

Ou,

$ find -type f -name '*install*' -exec rm {} +

Vous pourriez demander que nous puissions faire la même chose en utilisant "rm" commande comme ci-dessous :

$ rm *install*

Oui, ça ira. Cependant, rm install La commande supprimera tous les fichiers contenant "install" dans le nom de fichier du répertoire actuel et se plaindra si un nom de répertoire contient "install" .

Mais, le "find -type f" La commande recherchera de manière récursive uniquement les fichiers du répertoire actuel et de tous les sous-répertoires.

1.1. Trouver des fichiers contenant un texte spécifique dans leurs noms sous Linux

Si vous souhaitez uniquement rechercher des fichiers (et non les supprimer), supprimez simplement les options -delete ou -exec rm {} \; ou -exec rm {} + dans les commandes ci-dessus.

Par exemple, la commande suivante ne trouvera que les fichiers contenant la chaîne "install" en leurs noms :

$ $ find -type f -name '*install*'

Exemple de résultat :

./mysql_install.pdf
./apache_install.pdf
./php_install.pdf

2. Rechercher et supprimer des fichiers qui "ne" contiennent pas de texte spécifique dans leurs noms sous Linux

Vous savez comment supprimer un fichier qui contient une phrase spécifique dans son nom. Voyons maintenant comment rechercher et supprimer des fichiers qui n'ont pas de phrase ou de chaîne spécifique en leurs noms.

Pour ce faire, ajoutez simplement '-not' paramètre dans la commande de recherche comme indiqué ci-dessous.

$ find -type f -not -name '*install*' -delete

La commande ci-dessus ne supprimera pas les fichiers contenant la phrase "install" en leur nom et supprimez tout le reste.

Si supprimer n'est pas disponible, vous pouvez utiliser l'une des commandes suivantes :

$ find -type f -not -name '*install*' -exec rm {} \;

Ou,

$ find -type f -not -name '*install*' -exec rm {} +

Pour plus de détails sur la commande find, reportez-vous aux pages de manuel.

$ man find

Conclusion

Vous savez maintenant trouver un fichier qui contient un nom spécifique dans son nom et comment supprimer un fichier qui a et n'a pas eu un mot spécifique dans son nom. Cela sera utile lorsque vous souhaitez supprimer un grand nombre de fichiers du même type dans un répertoire.


Linux
  1. Comment puis-je utiliser xargs pour copier des fichiers contenant des espaces et des guillemets dans leurs noms ?

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

  3. Comment puis-je trouver tous les fichiers contenant du texte spécifique sous Linux ?

  4. Comment supprimez-vous les fichiers antérieurs à une date spécifique sous Linux ?

  5. Comment puis-je trouver des fichiers et calculer leur taille ?

Comment trouver des fichiers en fonction de leurs autorisations sous Linux

Comment trouver et supprimer des liens symboliques brisés sous Linux

Comment rechercher et supprimer des répertoires vides sous Linux

Comment trouver des fichiers contenant une chaîne de texte spécifique sous Linux

Comment trouver des fichiers en double sous Linux et les supprimer

Comment supprimer des fichiers et des répertoires à l'aide de la ligne de commande Linux