dohzysmes
s/rm/trash/g

Je viens de perdre pas mal de documents, pour une manip bête…

J’ai voulu virer toutes les images présente dans mes dossiers, donc :

find . -type f | grep ‘*.jpg’ | xargs rm

Ça marche pas, les espaces plantent

find . -type f -print0 | grep ‘*.jpg’ | xargs -0 rm

Ça marche pas non plus…. et c’est ce compliquer la vie pour rien…

Ok on change de méthode :

find . -type f -exec rm {} \;

Voilà ça marche !

Hey mais….

Merde !!!

Et oui, j’ai réécris vite, et j’ai oublié le test sur le nom… la commande aurait du être :

find . -type f -name ‘*.jpg’ -exec rm {} \;

Mais bon… trop tard… j’ai perdu tous les fichiers présents…

Donc nouvelles résolutions, pour ne plus avoir ça

  • toujours tester avant (remplacer rm par echo) et vérifier
    • find . -type f -name ‘*.jpg’ -exec echo {} \;
  • faire ça en ruby
    • ruby -e “Dir[**/*.jpg].each{|f| File.rm f}”
  • ne plus jamais utiliser rm

Ce dernier point est beaucoup plus complexe.
En effet l’idéal serait de faire comme quand on met un fichier à la corbeille : on le déplace mais il reste sur la même partition.
Donc un simple mv ne suffit pas…

Heureusement :

sudo apt-get install trash-cli
alias rm=”trash”

À partir de maintenant quand je tape rm, ça envoie le fichier à la corbeille !

Ce n’est pas ça qui va me rendre mes fichiers, mais j’ai beaucoup moins de chance d’en reperdre de la même mainère…

ps: on pourait croire que je n’ai perdu aucun fichier et que cette histoire ne sert que de pretexte à la présentation de trash-cli, mais non, j’ai réellement perdu plusieurs Go de données à cause de la commande stupide présentée plus haut….

blog comments powered by Disqus