Non, les fichiers de sauvegarde sont au format nom~ pas ~nom donc c’est bien *~ qu’il faut utiliser.
[quote=“SwitchT”]2) Quel est l’avantage d’utiliser xargs -0 rm ?
Pourquoi ne pas simplement utiliser :
Avec -exec la commande est exécutée pour chaque fichier alors qu’avec xargs la commande n’est appelée qu’une seule fois avec tous les fichiers en argument.
xargs est beaucoup plus souple que -exec car il permet du traitement par lots, voir son option -n qui permet de faire des choses de ce genre : find ~/ -name ‘*~’ -print0 | xargs -0 -n 50 rm (passer au maximum 50 arguments à rm à la fois, appeler rm autant de fois que nécessaire pour consommer tous les arguments). Quand tu as des milliers de fichiers à traiter c’est bien plus efficace avec xargs (si la commande appelée permet l’utilisation d’arguments multiples).
Contrairement à ce que tu as marqué les apostrophes autour de *~ (ou ~* peu importe) sont nécessaires sinon l’expansion shell de * se fait avant d’exécuter find et ce n’est pas ce qu’on veut. Exemple :
$ ls
foo~
$ find ~ -name *~
/home/syam/test/foo~
$ find ~ -name '*~'
/home/syam/.kde/share/config/plasma-desktop-appletsrc~
/home/syam/.kde/share/apps/akregator/data/feeds.opml~
/home/syam/test/foo~
La commande d’origine find ~/ -name ‘*~’ -print0 | xargs -0 rm est tout à fait correcte, c’est plutôt l’utilisation qui en est faite qui est incorrecte : elle a été lancée en tant que root donc le répertoire ~/ désigne /root alors qu’Escienca s’attendait sûrement à ce que find aille chercher dans son répertoire utilisateur /home/…
Le message d’erreur est lui aussi tout à fait normal, il ne fait qu’indiquer que rm a été appelé sans argument, autrement dit que find n’a trouvé aucun fichier.