Je souhaite rechercher plusieurs fichiers en utilisant find et les supprimer tous en utilisant -exec. Jai essayé

find ./ -type f -name fileA -o -name fileB -exec rm {} \; 

mais cela semble supprimer les fichiers « fileB » seulement pas fileAs.

Commentaires

  • Cela supprimera également tous les répertoires appelés " fileB ", dailleurs.
  • @Wildcard Pas avec le droit rm (il ' essaiera mais échouera ).
  • @Kusalananda, ah, à droite.

Réponse

-o sapplique également à laction, vous devez donc regrouper les choses:

find ./ -type f \( -name fileA -o -name fileB \) -exec rm {} \; 

BTW, votre find La mise en œuvre peut également prendre en charge les -delete:

find ./ -type f \( -name fileA -o -name fileB \) -delete 

Commentaires

  • et si cela ne ' t, il prend probablement en charge -exec rm {} +

Réponse

Autre alternative:

 WARNING: it is possible that due to funny characters in directory names it is possible that unintended files might be deleted. find ./ -type f \( -name fileA -o -name fileB \) -print | xargs rm -f 

Ou si possible pour les attraper fichiers avec des personnages amusants:

 NOTE: On some systems -print0 and -0 options are not available. But this would be the preferred and safer method) find ./ -type f \( -name fileA -o -name fileB \) -print0 | xargs -0 rm -f 

Commentaires

  • Jaime la façon dont vous êtes revenu près dun an plus tard juste pour ajouter la note sur les noms de fichiers, cette dédicace de '. : D

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *