Contenu | Rechercher | Menus

Annonce

Le forum a une nouvelle maison !
Le forum a été migré sur un nouvel hébergement. Si jamais vous trouvez le moindre problème, n'hésitez pas à nous en faire part !
L'équipe de modération vous présente ses meilleurs vœux pour l'année 2016.
Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".

#1 Le 17/12/2009, à 10:25

freddybidouille
Membre

[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 smile
Fred

Hors ligne

#2 Le 17/12/2009, à 11:34

genma
Membre

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 
done

Ca 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 ?      http://genma.free.fr
Mon twitter?     http://twitter.com/genma

Hors ligne

#3 Le 17/12/2009, à 11:42

Tronix27
Membre

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 0

Pour la numérotation des fichiers, j'ai un petite idée mais j'ai pas trop le temps de regarder ça maintenant sad

A+

Hors ligne

#4 Le 17/12/2009, à 16:01

FRUiT
Membre

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) http://tinyurl.com/yzm7cee
"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
Membre

Re : [BASH] Stocker noms de dossier et fichiers dans des variables

2 jours plus tard big_smile

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