J'ai installé (compilé) émeraude. La commande make uninstall
n'a pas fonctionné (il n'y a pas de fichier Make car c'est juste un script). J'ai donc décidé de supprimer le fichier manuellement. Mais il y avait beaucoup de fichiers.
J'ai essayé certaines choses mais cela n'a pas fonctionné. Je suis donc venu ici pour demander conseil.
ls -R | grep blabla*
que je puisse ajouter au répertoire de fichiers d'affichage (elle affiche uniquement le nom du fichier)ls -R | grep bla* | rm
?Si 'aname' doit être la partie de départ du nom de fichier, il le serait, à partir du répertoire actuel:
find -name "aname" -delete
Btw .:
grep "bla"* somewhere
est presque toujours faux, puisque grep fait déjà des correspondances partielles, ce qui signifie qu’il trouve bla, blafasel et xybla simplement
grep bla somewhere
Partie ancienne supprimée de la réponse, à cause d'un malentendu:
À partir du répertoire actuel, si vous recherchez le mot 'aname' dans tous les fichiers, vous pouvez simplement utiliser:
find -exec grep "aname" {} ";" -delete
Ce que vous recherchez, c'est une combinaison de xargs
, find
et rm
.
find
dressera une liste de tous les fichiers correspondant à vos conditions, puis les écrira (terminaison nulle) dans stdout
, qui sera redirigé vers xargs
. xargs
prendra les chaînes terminées par null et les utilisera comme arguments de rm
.
find -L /path/to/dir -name "*name*" -print0 |xargs -0 -r rm
source: http://linuxcommando.blogspot.com/2007/10/find-xargs-pipe.html
Entre les autres réponses: vous pouvez appeler rm
sans avoir besoin du programme xargs
. En fait, vous pouvez généralement utiliser l'option exec
pour find
au lieu de xargs
.
Pour appeler rm
aussi peu de fois que possible, sur de gros lots de fichiers:
find /path/to/dir -name "*name*" -exec rm {} +
Pour appeler rm
une fois pour chaque fichier:
find /path/to/dir -name "*name*" -exec rm {} ";"
Il existe également des options plus élaborées pour find
qui seront modifiées dans le répertoire avant l'exécution de la commande.