Traitement d'un fichier csv pour executer une commande shell
Bonjour,
Sous linux et shell BASH j’essaie de faire les actions suivantes :
1: trouver les doublons de fichiers qui porte un nom semblables (pas de vrais doublons, uniquement doublon par un nom proche) avec la même extension (.mm dans ce cas)
2 lister le resultat de cette recherche dans 1 fichier avec 1 ligne par résultat dans l'ordre alphabétique des noms des fichiers (sans tenir compte des chemins des dossiers)
3 executer par une commande shell des actions diverses (renomage, suppression, déplacement etc..) sur ce fichier qui aura était expurger par suppression des lignes que je ne veux pas traiter.
Pour l'action 1
J'avais trouvé :
Code:
find ~/Documents/ShellEssais/Doublons -iname "*.mm" -type f -printf '%s ;%c; ' -exec /usr/bin/md5sum {} \; |sed -e 's/ ./;/g'|sort -n -t";" -k1,3 > gros_fichier_doublons.csv
Qui conviendrait presque mais je ne veux pas trouver les doublons je veux simplement lister par ordre alphabétique les noms de fichiers et les envoyer avec le chemin dans un fichier .csv
Pour l'action 2
Je n'arrive pas à trouver l'instruction permettant de changer la forme du résultat de l'extraction obtenu par find. Je n'est pas encore compris comment utiliser printf
Pour l'action 3
J'ai trouvé
Code:
$ for doublon in `cat doublons.csv ` ; do rm -i $doublon; done
Mais je rencontre 2 problèmes
Comment depuis le fichier qui contient les colonnes diverses (inodes, chemins, taille, noms des fichiers) facilement ne retrouver que les noms des fichiers
et
Je ne sais pas réaliser le traitement sur les noms de fichiers avec un ou des espaces
Merci pour votre aide