#1951 Le 16/05/2011, à 17:25
- Rolinh
Re : /* Topic des codeurs couche-tard [4] */
Au fait, -p à mkdir ne sert à rien.
Pourquoi ça?
(merci pour le reste )
EDIT: j'suis bête, t'as parfaitement raison
EDIT2: heu non, j'avais bien mis le -p pour une raison en fait (pour qu'il ne tente pas de recréer le dossier)
EDIT3: pour le if CURID, j'avais fait comme toi le premier coup mais j'avais une erreur d'où la comparaison pas jolie
Dernière modification par Rolinh (Le 16/05/2011, à 17:33)
Hors ligne
#1952 Le 16/05/2011, à 17:58
- Pylades
Re : /* Topic des codeurs couche-tard [4] */
[…]
EDIT2: heu non, j'avais bien mis le -p pour une raison en fait (pour qu'il ne tente pas de recréer le dossier)
Mouais, j’aurais plutôt fait un 2>/dev/null voire un test -d plouf || mkdir plouf, pour ça… Mais bon, c’est vrai que -p c’est moins verbeux…
EDIT3: pour le if CURID, j'avais fait comme toi le premier coup mais j'avais une erreur d'où la comparaison pas jolie
Ouais, il y a un truc bizarre autour de ce if…
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne
#1953 Le 16/05/2011, à 18:12
- Rolinh
Re : /* Topic des codeurs couche-tard [4] */
Bon, ça mérite encore d'être propré. Merci pour ton aide
Hors ligne
#1954 Le 16/05/2011, à 18:13
- Pylades
Re : /* Topic des codeurs couche-tard [4] */
#!/bin/bash
# This script creates folders in which to move files according to their
# ID given in their filename as in, for example, 12345_bob_marley_london.mov
# 12345 would be the ID
echo 'Yay, I will clean YOUR mess...'
echo 'Moving files:'
while read file; do
CURID=$(egrep -o *'[[:digit:]]+'* <<< $file)
if [ $CURID ]; then
mkdir -p $CURID
while read tomove; do
mv -v "$tomove" $CURID 2>/dev/null
done < <(ls | grep '\(^\|_\)'$CURID'\($\|_\)')
fi
done < <(find -P `pwd` -maxdepth 2 | sed 's!.*/!!')
find . -type d -empty -exec rmdir {} \;
echo 'Hurray, everything has been sorted out!'
Ah, bah ça va marcher beaucoup mieux, là, forcément… ><"
Dernière modification par Pylade (Le 16/05/2011, à 18:16)
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne
#1955 Le 16/05/2011, à 18:15
- Pylades
Re : /* Topic des codeurs couche-tard [4] */
(Cela dit, il y a encore à améliorer. Mais je veux prendre une pause. )
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne
#1956 Le 16/05/2011, à 18:18
- Rolinh
Re : /* Topic des codeurs couche-tard [4] */
Ceci dit, cela ne marche de nouveau plus
(il ne créé pas tous les dossiers nécessaires maintenant)
EDIT: t'as réédit, faut que je retest^^
EDIT2: en fait, t'as juste viré une variable mais ça ne marche toujours pas^^
Dernière modification par Rolinh (Le 16/05/2011, à 18:20)
Hors ligne
#1957 Le 16/05/2011, à 18:22
- Pylades
Re : /* Topic des codeurs couche-tard [4] */
Schgrmbl…
Verrai plus tard.
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne
#1958 Le 16/05/2011, à 18:23
- Rolinh
Re : /* Topic des codeurs couche-tard [4] */
Moi aussi (vais rentrer chez moi déjà^^)
Hors ligne
#1959 Le 16/05/2011, à 20:30
- Pylades
Re : /* Topic des codeurs couche-tard [4] */
#!/bin/bash
# This script creates folders in which to move files according to their
# ID given in their filename as in, for example, 12345_bob_marley_london.mov
# 12345 would be the ID
echo 'Yay, I will clean YOUR mess...'
echo 'Moving files:'
while read file; do
CURID=$(egrep -o *'[[:digit:]]+'* <<< $file)
if [ -n $CURID ]; then
test -d $CURID || mkdir $CURID
while read tomove; do
mv -v "$tomove" $CURID
done < <(ls | grep '\(^\|_\)'$CURID'\(_.*\)\(\.mov$\|\.jpg$\|\.xml$\)')
fi
done < <(find -P `pwd` -maxdepth 2 | sed 's!.*/!!')
find . -type d -empty -exec rmdir {} \;
echo 'Hurray, everything has been sorted out!'
Ceci fonctionne, j’ai testé, au prix d’un regex à coucher dehors.
Mais au moins la regex rend le truc vraiment secure ; c’est du béton armé.
Bon, je vais regarder le find, là…
Dernière modification par Pylade (Le 16/05/2011, à 20:32)
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne
#1960 Le 16/05/2011, à 20:33
- Rolinh
Re : /* Topic des codeurs couche-tard [4] */
Je venais de me remettre dessus.
Ouep, c'est une bonne idée le filtre (je pensais intégrer un truc dans le genre par la suite) mais... il me semble que tu ne prends pas en compte les fichiers dans un sous-dossier qu'il faut aussi trouver et déplacer.
Je test de suite
EDIT: ouep, pour le find doit y avoir moyen de faire quelque chose (mon sed ne me plait pas trop en fait...)
EDIT2: il y a quelque chose qui lui plait pas avec ta façon de faire:
[robin@odin ~/Scripts/sandbox] % ls
234234_ihdfih_ihf.png 234455_Seal_houp.png movmov movmov_pylade unit_234455.xml
234455_Seal_houp.mov gg movmov.html unit_1840.xml
[robin@odin ~/Scripts/sandbox] % ./movmov_pylade
Yay, I will clean YOUR mess...
Moving files:
`234455_Seal_houp.mov' -> `234455/234455_Seal_houp.mov'
find: `./184056': No such file or directory
find: `./1840': No such file or directory
find: `./234234': No such file or directory
Hurray, everything has been sorted out!
[robin@odin ~/Scripts/sandbox] % ls
234234_ihdfih_ihf.png 234455_Seal_houp.png movmov movmov_pylade unit_234455.xml
234455 gg movmov.html unit_1840.xml
[robin@odin ~/Scripts/sandbox] %
Dernière modification par Rolinh (Le 16/05/2011, à 20:36)
Hors ligne
#1961 Le 16/05/2011, à 20:42
- Pylades
Re : /* Topic des codeurs couche-tard [4] */
Hum, en effet, il râle pour le sous dossier. Ça confirme le fait qu’il va falloir bosser sur le find (c’est lui qui râle).
Édit : pour la sortie que tu as, je parie que gg est un sous-dossier.
Dernière modification par Pylade (Le 16/05/2011, à 20:45)
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne
#1962 Le 16/05/2011, à 20:43
- Rolinh
Re : /* Topic des codeurs couche-tard [4] */
Avec ma version, pas de soucis avec le find pourtant...
Hors ligne
#1963 Le 16/05/2011, à 20:46
- Pylades
Re : /* Topic des codeurs couche-tard [4] */
Édité…
Ouais, pas de soucis de find avec ta version. J’ai dû faire une supposition sur le find qui n’avais pas raison d’être…
Je vais manger et je regarde (je veux réussir ).
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne
#1964 Le 16/05/2011, à 20:48
- Rolinh
Re : /* Topic des codeurs couche-tard [4] */
Bon app'
(je veux réussir
).
tout pareil (fondamentalement, mon pote se contente de ma première version ^^)
EDIT: arf, je tente une regex sur le mv mais je sèche un peu
EDIT2: il me semble que ta regex sur le grep du tomove ne va pas. De plus, je ne vois pas pourquoi faire une boucle pour le mv alors que l'on peut lui passer plusieurs fichiers à déplacer en une fois. Enfin, je dis ça mais en même temps je n'arrive pas à pondre une solution clean.
Dernière modification par Rolinh (Le 16/05/2011, à 21:48)
Hors ligne
#1965 Le 16/05/2011, à 22:32
- Pylades
Re : /* Topic des codeurs couche-tard [4] */
On boucle parce que c’est la seule solution pour bien gérer les noms de fichier avec espace… Sinon, soit tu découpes les noms avec espace, soit tu colles les différents noms…
(Enfin, c’est la seule solution à ma connaissance ; je ne suis pas une bête de bash non plus…)
Dernière modification par Pylade (Le 16/05/2011, à 22:33)
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne
#1966 Le 16/05/2011, à 23:07
- Rolinh
Re : /* Topic des codeurs couche-tard [4] */
Mais si on utilise un joker (*), on s'en fiche des espaces dans le nom. On cherche juste des fichiers du genre:
*_$curdir.*
$curdir_*
*_$curdir_*
Enfin... il me semble. Mon soucis étant surtout de ne pas mettre les fichiers 1234_hghg.jpg et 12345_jj.xml dans le même dossier (c'est à dire un fichier dont dans le nom il y a une sous-chaine pouvant potentiellement correspondre à une autre ID).
Hors ligne
#1967 Le 16/05/2011, à 23:07
- The Uploader
Re : /* Topic des codeurs couche-tard [4] */
pRoRp
- Oldies PC : Intel Pentium 3 @ 800 Mhz sur CM ASUS P2B-F, GeForce 4 Ti4800 SE, Disque Dur Hitachi 160 Go, 512 Mo de RAM, 3DFX Voodoo 2, Sound Blaster 16 ISA PnP, Windows 98 SE / XP)
- Desktop : Intel Core i7 6700K @ 4 GHz sur CM ASUS Z170-P, GeForce GTX 1070, SSD Samsung 850 EVO 1 To, 16 Go de RAM, Disque Dur Seagate Barracuda 3 To, Windows 10
Hors ligne
#1968 Le 16/05/2011, à 23:20
- tshirtman
Re : /* Topic des codeurs couche-tard [4] */
comme dans "du code de pRoRp" ?
Hors ligne
#1969 Le 16/05/2011, à 23:41
- The Uploader
Re : /* Topic des codeurs couche-tard [4] */
Nan, plutôt un mix entre plop et RoR.
Dernière modification par The Uploader (Le 16/05/2011, à 23:41)
- Oldies PC : Intel Pentium 3 @ 800 Mhz sur CM ASUS P2B-F, GeForce 4 Ti4800 SE, Disque Dur Hitachi 160 Go, 512 Mo de RAM, 3DFX Voodoo 2, Sound Blaster 16 ISA PnP, Windows 98 SE / XP)
- Desktop : Intel Core i7 6700K @ 4 GHz sur CM ASUS Z170-P, GeForce GTX 1070, SSD Samsung 850 EVO 1 To, 16 Go de RAM, Disque Dur Seagate Barracuda 3 To, Windows 10
Hors ligne
#1970 Le 17/05/2011, à 00:01
- cm-t
Re : /* Topic des codeurs couche-tard [4] */
'Nuit;
Actu Ubuntu ☺/
Pauses Ubuntu sur Paris \_< -t
[(π)] La Quadrature du net
Hors ligne
#1971 Le 17/05/2011, à 00:02
- Rolinh
Re : /* Topic des codeurs couche-tard [4] */
@The Uploader: tiens, un truc qui pourrait te plaire (ça devrait être intégré dans Xfce 4.10): xfwm4-tiling
Hors ligne
#1972 Le 17/05/2011, à 00:18
- Pylades
Re : /* Topic des codeurs couche-tard [4] */
Ça marche et c’est sûr ; mais je ne suis pas convaincu que ça soit élégant ni rapide…
#!/bin/bash
# This script creates folders in which to move files according to their
# ID given in their filename as in, for example, 12345_bob_marley_london.mov
# 12345 would be the ID
regex='\(^\|_\)ID\(_.*\)\?\(\.mov$\|\.jpg$\|\.xml$\)'
gen_id()
{
while read file
do
if grep -q '\(^\|_\)[[:digit:]]\+\(_.*\)\?\(\.mov$\|\.jpg$\|\.xml$\)' <<< $(basename "$file")
then
sed 's/\(^\|^.*_\)\([[:digit:]]\+\)\(_.*\)\?\(\.mov$\|\.jpg$\|\.xml$\)/\2/' <<< $(basename "$file")
fi
done < <(find -maxdepth 2)
}
echo 'Yay, I will clean YOUR mess...'
echo 'Moving files:'
while read id; do
test -d $id || mkdir $id
while read tomove; do
basename $tomove | grep -q ${regex/ID/$id} &&
mv -v "$tomove" $id 2>/dev/null
done < <(find -maxdepth 2)
done < <(gen_id | sort -n | uniq)
find . -type d -empty -exec rmdir {} \;
echo 'Hurray, everything has been sorted out!'
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne
#1973 Le 17/05/2011, à 00:30
- tshirtman
Re : /* Topic des codeurs couche-tard [4] */
tu va bientot constuire ta regex avec une regex
et bonne nuit ^^
Hors ligne
#1974 Le 17/05/2011, à 00:31
- Rolinh
Re : /* Topic des codeurs couche-tard [4] */
Ah, en tout cas, ça change!
Mais effectivement, je ne suis pas convaincu que cela soit plus efficace (il y a un poil de redondance (je pense au find)).
Je retenterais un truc demain
Bn;
Hors ligne
#1975 Le 17/05/2011, à 00:34
- Sir Na Kraïou
Re : /* Topic des codeurs couche-tard [4] */
.
Descendant de Charlemagne et de LUCA.
Bleu, en l'hommage d'un truc bleu. :'(
C'est pas du bleu.
C'est pas le lac de Genève, c'est le Lac Léman.
Hors ligne