Il y a quelques temps, aprés avoir testé un gestionnaire de fichiers en version pré-alpha, j'ai perdu ~30000 fichiers/2Go. je les avait récupéré grace à recover. Ils portaient tous ensuite un nom : INODE_XXX.
J'avais donc fait un petit script bash qui crée un repertoire par type, et déplace les fichiers de ce type à l'interieur. Avec quelques modifications tu peux lui faire en plus rajouter les bonnes extentions.
Je te file le script tel quel, mais si c'etait à refaire, j'utiliserais plutôt la commande file -i qui donne le type mime et ensuite, à partir du type mime, j'irai chercher l'extention correspondante dans le fichier /usr/share/mime/globs (shared-mime-info de freedesktop.org)
#!/bin/bash
CWD=`pwd`
LOG_FILE="$CWD/log.txt"
DEBUG="1" [ "$DEBUG"="1" ]&&touch $LOG_FILE
date > $LOG_FILE for i in *;do
FULLPATH="$CWD/$i" [ "$DEBUG"="1" ] && echo"Trying to identify $i ..."
file_type=`file -b "$FULLPATH" | cut -d"," -f1 | tr """_"` [ "$DEBUG"="1" ] && echo"->file type is : $file_type" if[ !"$file_type"="" ]; then [ "$DEBUG"="1" ] && echo"OK, file_type ($file_type) n'est pas vide" if[ -f"$FULLPATH" ]; then [ "$DEBUG"="1" ] && echo"OK, le fichier ($FULLPATH) est un fichier regulier" if[ -d"$CWD/$file_type" ]; then [ "$DEBUG"="1" ] && echo"OK, le repertoire $CWD/$file_type existe déjà" [ "$DEBUG"="1" ] && echo"copie du fichier ($FULLPATH) vers $CWD/$filetype" mv"$FULLPATH" $CWD/$file_type || echo"la copie de $FULLPATH vers $CWD/$file_type à echoué">> $LOG_FILE else [ "$DEBUG"="1" ] && echo"! Le repertoire $CWD/$file_type n'existe pas !" [ "$DEBUG"="1" ] && echo"creation du repertoire $CWD/$file_type" mkdir $CWD/$file_type || echo"la creation du repertoire $CWD/$file_type à echoué">> $LOG_FILE [ "$DEBUG"="1" ] && echo"copie du fichier ($FULLPATH) vers $CWD/$filetype" mv"$FULLPATH" $CWD/$file_type || echo"la copie de $FULLPATH vers $CWD/$file_type à echoué">> $LOG_FILE fi else [ "$DEBUG"="1" ] && echo"! le fichier ($FULLPATH) n'est pas un fichier regulier !" fi else [ "$DEBUG"="1" ] && echo"OK, file_type ($file_type) est vide" fi done
IFS=$'\r'; var="$(<$LOG_FILE)"; [ "$DEBUG"="1" ]&&echo -e "\nIl y a eu ${#var} erreurs pendant l'operation"
# script shell
Posté par gnujsa . En réponse au message Renommer les fichiers dans lost+found. Évalué à 5.
J'avais donc fait un petit script bash qui crée un repertoire par type, et déplace les fichiers de ce type à l'interieur. Avec quelques modifications tu peux lui faire en plus rajouter les bonnes extentions.
Je te file le script tel quel, mais si c'etait à refaire, j'utiliserais plutôt la commande file -i qui donne le type mime et ensuite, à partir du type mime, j'irai chercher l'extention correspondante dans le fichier /usr/share/mime/globs (shared-mime-info de freedesktop.org)