#1 Le 17/12/2009, à 10:25
- freddybidouille
[BASH] Stocker noms de dossier et fichiers dans des variables
hello,
J'aurais besoin d'un coup de main en BASH pour stocker le noms de mes sous-dossiers (et plus tard des fichiers contenus dans ces sous-dossiers) dans des variables en fonction du $i de la boucle for.
Ce que je veux faire en détail :
J'ai 4 dossiers personnels contenant en vrac des "fichier.doc". et je veux mettre ces fichiers dans un dossier du même nom. C'est à dire : si y a un fichier arbre.doc, je veux que le script me le range dans le dossier arbre et qu'il lui donne un numéro si un fichier du même nom existe déjà.
Voila merci d'avance à tous ceux qui m'aiderons ![]()
Fred
Hors ligne
#2 Le 17/12/2009, à 11:34
- genma

Re : [BASH] Stocker noms de dossier et fichiers dans des variables
Ca ca marche chez moi.
#!/bin/bash
for i in `find -name *.doc`
do
echo "Nom des fichiers avec chemin" $i
j=`basename $i`
echo "Nom des repertoires a creer avec .doc" $j
j=`echo $j |cut -d "." -f1`
echo "Nom des repertoires a creer" $j
if [ ! -d $j ]
then
mkdir $j
mv $i $j
fi
doneCa prend en compte (pas encore) la numérotation si on a déjà un fichier existant du même nom, à un autre endroit.
Dernière modification par genma (Le 17/12/2009, à 11:45)
"Lorsque tu as découvert le libre, tu sais que tu ne pourras plus jamais revenir en arrière".
Utilisateur d'Ubuntu depuis la version 4.10 !
Mon blog ? https://blog.genma.fr
Mon twitter? http://twitter.com/genma
Hors ligne
#3 Le 17/12/2009, à 11:42
- Tronix27

Re : [BASH] Stocker noms de dossier et fichiers dans des variables
Hello,
Voici une variante proche du code de Genma :
#!/bin/bash
rootpath=/chemin/source # a modifier
newpath=/chemin/destination # a modifier
for i in $(find $rootpath -name "*.doc")
do
folder=$newpath/$(basename $i | cut -d '.' -f 1)
if [ $folder ]
then
mkdir -p $folder
fi
cp $i $folder
done
exit 0Pour la numérotation des fichiers, j'ai un petite idée mais j'ai pas trop le temps de regarder ça maintenant ![]()
A+
Hors ligne
#4 Le 17/12/2009, à 16:01
- FRUiT

Re : [BASH] Stocker noms de dossier et fichiers dans des variables
incr_file ()
{
num= ; f=$1;
while [ -f "$f" ]; do
num=$(($num+1))
f=$1$num
done
# do whatever with $f
}Dernière modification par FRUiT (Le 17/12/2009, à 16:04)
Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean
Hors ligne
#5 Le 19/12/2009, à 18:04
- Totor

Re : [BASH] Stocker noms de dossier et fichiers dans des variables
2 jours plus tard ![]()
incr_file()
{
fichier="$(ls 2>/dev/null *"$1"|sort -nr|head -1)"
[ "${fichier}" ] && fichier="$((${fichier%$1}+1))$1"
echo "${fichier}"
}l'inconvénient : il ne comble pas les trous
-- Lucid Lynx --
Hors ligne