8
votes

Comment supprimer les dossiers à l'aide de Regex à partir du terminal Linux

dire que j'ai des dossiers: xxx

Comment puis-je supprimer ces dossiers à l'aide de regex à partir de la borne Linux, qui correspond à tout début avec IMG?


1 commentaires

Pour l'enregistrement, les expressions génériques de Wildcard de Shell ne sont pas correctes expressions régulières.


3 Réponses :


20
votes

Vous pouvez utiliser xxx pré>

qui devrait supprimer tous les fichiers et répertoires du répertoire de travail actuel commençant par img p>

EDIT: P>

pour supprimer Seuls les répertoires dans le répertoire de travail actuel commençant par IMG P>

rm -r img*/


4 commentaires

Cela supprimera également tout fichier qui correspondra à l'expression, cette commande supprimera tout ce qui correspond à l'expression, non seulement des répertoires.


L'OP dit 'qui correspond à tout ce qui commence par IMG?


Si le nom doit démarrer img, vous devez utiliser ^ img. * . Sans ^ nom de caractère peut avoir IMG par exemple au milieu.


Comme ma solution n'utilisait pas une refonte globale complète Regex, comme mentionné dans d'autres commentaires, cela ne se produit pas dans ce cas



27
votes

Utilisez Rechercher pour filtrer les annuaires

$ find . -type d -regex "\./img.*" -exec rm -rf {} \;


5 commentaires

Un moyen d'améliorer cela pourrait consister à ajouter -maxdepth 1 à trouver comme celui-ci trouver. -Type D -maxDepth 1 -regex "\ ./ img. *" -exec rm -rf -rf {} \; Ce sera plus rapide.


J'ai beaucoup utilisé votre commande pour nettoyer les anciennes sauvegardes sur nos serveurs de production, mais je ne peux pas comprendre une regex pour obtenir tous les dossiers, sauf le premier du mois (signifie que je veux éliminer chaque dossier de sauvegarde sauf 1 pour chaque mois). Le nom des dossiers est défini comme ceci: "yyyy.mm.dd.hh.mm.ss" (ex: 2016.07.29.03.00.19). Même trouver. -Type d -regex "\ ./ 2016 \. *" ne retourne rien ... aucune idée?


essayez trouver. -Type d -regex ". * / 2016. *"


{} est remplacé par le nom du fichier et \; marque la fin de la commande passée à EXEC (si vous ne vous échappez pas, il serait pris par la coquille)


Autres discussions mentionne également $ trouver. -Type d -regex "^ \ ./ img. * $" -exec rm -rf {} +



0
votes

Dans le processus de recherche sur la manière d'utiliser Regexps pour supprimer des fichiers spécifiques à l'intérieur d'un répertoire, je suis tombé sur ce poteau et un autre de Mahmoud Mustafa: http://mah.moud.info/delete-files-or-directories-linux

Ce code supprimera tout ce qui comprend quatre chiffres consécutifs dans 0 -9, dans mes dossiers de cas avec des mois et des dates allant de jann002 - Jan2014: xxx

espoir qui aide toute personne à regarder sur le point de supprimer des fichiers individuels au lieu des dossiers.


0 commentaires