OVH Cloud OVH Cloud

dossier archi-plein à scinder en sous-dossier ?

5 réponses
Avatar
Pierre
Bjr,

j'ai un dossier contenant 10 000 fichiers. Je souhaite trouver un moyen
automatique de créer autant de sous-dossiers que nécessaire et y placer
au maximum 300 fichiers.

existe t il un moyen de faire cela de manière automatique ?

merci

5 réponses

Avatar
Michael
On 2006-05-31 00:55:51 +0200, Pierre said:

existe t il un moyen de faire cela de manière automatique ?


Si tu es sous Tiger, as-tu regardé du côté d'Automator ?

--
iMac G5 1,8 Ghz, 17p, 1 Go, 80 Go, Superdrive, MacOS X 10.4.6 Tiger
iBook G4 1 Ghz, 12p, 1.256 Go, 60 Go, Combo, MacOS X 10.4.6 Tiger

Avatar
Pierre
In article <447ccfaf$0$19695$,
Michael wrote:

On 2006-05-31 00:55:51 +0200, Pierre said:

existe t il un moyen de faire cela de manière automatique ?


Si tu es sous Tiger, as-tu regardé du côté d'Automator ?


C'est une bonne idée, mais le peu que j'ai vu d'automator me parait
compliqué (a ce propos existe il un site succinct qui explique en 2
temps 3 mvts comment utiliser automator sans y passer 3 heures ?) et un
script shell me paraissait plus simple.


Avatar
Mickael Le Baillif
Pierre wrote:
Bjr,

j'ai un dossier contenant 10 000 fichiers. Je souhaite trouver un moyen
automatique de créer autant de sous-dossiers que nécessaire et y placer
au maximum 300 fichiers.

existe t il un moyen de faire cela de manière automatique ?

merci


Voilà un script qui devrait faire l'affaire :

#!/bin/bash
nb_fichier_par_dossier
num_dossier=0
num_fichier=$nb_fichier_par_dossier
for file in *
do
if [ $num_fichier -eq $nb_fichier_par_dossier ]
then
num_fichier=0
num_dossier=$((num_dossier + 1))
mkdir dossier_$num_dossier
fi
mv $file dossier_$num_dossier
num_fichier=$((num_fichier + 1))
done



Si le dossier contenant les 10.000 fichiers est
/Users/Pierre/gros_dossier/, créez ce script par exemple dans
/Users/Pierre/script_decoupe.sh et rendez le executable par "chmod a+x
script_decoupe.sh"

Ensuite, dans le Terminal, direction le gros dossier :
$> cd /Users/Pierre/gros_dossier
$> ../script_decoupe.sh


Vosu pouvez changer le nombre de fichier à mettre dans chaque
sous-dossier (variable nb_fichier_par_dossier), ainsi que le préfixe
donné à chaque dossier, dans la ligne "mkdir dossier_$num_dossier".
Actuellement, ce script crée les dossiers suivants :
dossier_1
dossier_2
dossier_3
...


En espérant que ceci corresponde à vos attentes !

Cordialement,
Mickaël Le Baillif

Avatar
patpro ~ Patrick Proniewski
In article <e5k1ri$o4n$,
Mickael Le Baillif wrote:

mv $file dossier_$num_dossier


et si le nom de fichier contient un espace, ton script explose :)


patpro

--
http://www.patpro.net/

Avatar
Nicolas.MICHEL
Pierre wrote:

Bjr,

j'ai un dossier contenant 10 000 fichiers. Je souhaite trouver un moyen
automatique de créer autant de sous-dossiers que nécessaire et y placer
au maximum 300 fichiers.

existe t il un moyen de faire cela de manière automatique ?

merci


Donc il n'y a pas de dossiers dans ce dossier ?
En suppostant qu'il n'y ait pas de retours de chariots dans les noms de
fichiers, un script du genre de ce qui suit devrait le faire :


#!/bin/bash -vx

cible="/Users/toto/cible"
dest="/Users/toto/dest"

nbrFichiers=$( ls -1 $cible |wc -l)
nbrDossiers=$(expr $nbrFichiers / 300 )
n=0
while [ "$n" -le "$nbrDossiers" ]
do
mkdir -p $dest/$n
for i in $( ls -1 $cible | sed -n -e '1,300p' )
do
mv "$cible/$i" "$dest/$n/$i"
done
n=$(expr $n + 1)
done


Attention à remplacer cible et dest par les dossiers voulus.

fais un backup avant de le lancer, il y fonctionné chez moi mais sait-on
jamais :)

--
S'il n'y a pas de solutions, c'est qu'il n'y a pas de problèmes
iChat/AIM : michelnicolas