J'ai essayé de courir
locate *.orig | xargs rm
mais il a dit No such file or directory
J'ai vu des façons de le faire avec find
mais localiser renvoie le chemin complet de l'objet, ce qui devrait être possible
Si les noms de fichiers contiennent des espaces, vous devez utiliser
locate -0 $something | xargs -0 rm
-0
,--null
Séparez les entrées en sortie à l'aide du caractère ASCII NUL au lieu d'écrire chaque entrée sur une ligne distincte. Cette option est conçue pour l'interopérabilité avec l'option --null de GNU xargs (1).
ou
locate $something | while read f; do rm "$f"; done
En outre, vous devez protéger *.orig
avec des guillemets pour éviter l'expansion du shell et le laisser pour localiser inaltéré.
C'est xargs
pas xarg
La commande locate *.orig | xargs rm
fonctionne, mais il se trouvait que locate
cherchait *.orig
fichiers dans la corbeille et rm
crachait l'erreur No such file or directory
en essayant. supprimer des fichiers dans la corbeille.
localiser ne fait pas le globbing, mais le shell fait. Le shell étend * .orig à ce qu’il trouve dans le répertoire actuel qui correspond à * .orig.
Juste utiliser
locate .orig
et si cela vous apporte ce dont vous avez besoin
locate .orig | xargs rm
ou, comme mentionné par enzotib
locate -0 .orig | xargs -0 rm
si vous avez des espaces blancs dans les noms de fichiers.
Une astuce: enregistrez tous les chemins dans un fichier tmp. alors, boucle dessus:
#!/bin/bash
locate .orig /tmp/tmp.txt
while read line
do
pth=$line
rm "$pth"
done < /tmp/tmp.txt
rm -rf /tmp/tmp.txt