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….