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 ?
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.
In article <447ccfaf$0$19695$8fcfb975@news.wanadoo.fr>,
Michael <berengue.michael@NOPwanadoo.frNOP> wrote:
On 2006-05-31 00:55:51 +0200, Pierre <traul@freespam.fr> 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.
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.
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
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
...
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
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/
In article <e5k1ri$o4n$1@amma.irisa.fr>,
Mickael Le Baillif <mlebaill@irisa.fr> wrote:
mv $file dossier_$num_dossier
et si le nom de fichier contient un espace, ton script explose :)
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/
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
Pierre <traul@freespam.fr> 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
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