Voilà, j'aimerai faire un script pour classer certain de mes fichiers, afec une boucle type :
for i in *
mv $i .... etc etc
Le truc c'est que quand un fichier est composé d'espace, tel que "Mon fichier", bah mon i prend les valeurs de Mon puis ensuite de Fichier.
Donc comment jpourrai faire pour qu'il prenne le nom complet de fichier ?
Si quelqu'un a un exemple de script tout fait pour classer des fichiers, j'aimerai bien m'en inspirer :-)
Merci.
# Re: Classer ses fichiers
Posté par pinky . Évalué à 4.
# Commentaire supprimé
Posté par Anonyme . Évalué à -1.
Ce commentaire a été supprimé par l’équipe de modération.
# Re: Classer ses fichiers
Posté par Pascal Marcou (site web personnel) . Évalué à 1.
Il y a une astuce qui en parle :
http://linuxfr.org/tips/35.html(...)
Pour résumer, en utilisant find et while, ça fonctionne :
find * -type f -maxdepth 0|while read fichier;
do
echo $fichier
done
[^] # Re: Classer ses fichiers
Posté par fred point . Évalué à 0.
find * -type f -maxdepth 0 -exec echo {} \;
{}: corresponds au nom du fichier courant
NB: ne pas oublier l'antislash
# Re: Classer ses fichiers
Posté par M . Évalué à 2.
[^] # Re: Classer ses fichiers
Posté par M . Évalué à 3.
Matthieu qui trouve que dlfp c'etait mieux avant....
# Re: Classer ses fichiers
Posté par cho7 . Évalué à 1.
Je vais jeter un oeil a tout ca une fois rentré chez moi.
++
# Re: Classer ses fichiers
Posté par gnujsa . Évalué à 1.
Mais je pense qu'ill ne doit pas aimer les noms comportant des espaces lui aussi: Il etait prevu pour des fichiers ne comportant pas d'espaces.
Le but de ce script est d'identifier le type mime de chaque fichier, puis de créer des sous repertoires, pour chaque type et enfin de déplacer les fichiers dans les sous repertoires.
c'est un peu crado, c'est à revoir, mais il a bien fait son boulot ;-)
#!/bin/bash
#**************************************************#
# #
# Fait par JS, Le Mercredi 15 Octobre 2003 #
# aprés avoir perdu 30000 fichiers/2Go #
# Pour renommer automatiquement ses fichiers #
# INODE_XXX, récupérés avec recover #
# #
# #
# dedicaced to the file /usr/share/misc/file/magic #
# #
#**************************************************#
# si fichier regulier et si repertoire_type existe, copier vers repertoire_type
# sinon créer repertoire_type, puis copier
CWD=`pwd`
# BUG revoir le system de logs dans /tmp + n° de pid
LOG_FILE="$CWD/log.txt"
DEBUG="1"
[ "$DEBUG" = "1" ] && touch $LOG_FILE
## BUG !
date > $LOG_FILE
# || echo "je ne peut créer $LOG_FILE"; exit 1
# IFS=":"
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"
# echo "mv $FULLPATH $CWD/$file_type" || echo "la copie de $FULLPATH vers $CWD/$file_type à echoué" >> $LOG_FILE
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"
# echo "mkdir $CWD/$file_type" || echo "la creation du repertoire $CWD/$file_type à echoué" >> $LOG_FILE
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"
# echo "mv $FULLPATH $CWD/$file_type" || echo "la copie de $FULLPATH vers $CWD/$file_type à echoué" >> $LOG_FILE
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
# [ "$DEBUG" = "1" ] && echo -n "Il y a eu `wc -l $LOG_FILE` erreurs pendant l'operation"
IFS=$'\r'; var="$(<$LOG_FILE)";
[ "$DEBUG" = "1" ] && echo -e "\nIl y a eu ${#var} erreurs pendant l'operation"
# Re: Classer ses fichiers
Posté par Axioplase ıɥs∀ (site web personnel) . Évalué à 1.
Evidemment, il faut que le repertoire ./plop existe...
P!
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.