Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[newbie][bash] aide pour optimisation script

17 réponses
Avatar
jose.campos+spam
Bonjour,

Devant récupérer des fichiers (photos) au sein d'une arborescence
anarchique et les reclasser dans autre arborescence cette fois dotée
d'une certaine logique (année/mois/jour/) me voilà lancer dans un script
bash.

La première partie se règle assez facilement :
8<---
cd "$origine"
find . -type f -exec cp '{}' $cible \;
8<---

La deuxième phase est plus laborieuse :
8<---
cd "${cible}"
for photo in *
do
if [ ! -d "$photo" ] ; then
stat -t '%Y%m%d' "$photo" | {
read ch01 ch02 ch03 ch04 ch05 ch06 ch07 ch08 ch09 \
ch10 ch11 ch12 ch13 ch14 ch15
annee=${ch12:1:4} ; if [ ! -d "$annee" ] ; then mkdir "$annee" ; fi
cd "$annee"
mois=${ch12:5:2} ; if [ ! -d "$mois" ] ; then mkdir "$mois" ; fi
cd "$mois"
jour=${ch12:7:2} ; if [ ! -d "$jour" ] ; then mkdir "$jour" ; fi
mv "${cible}/${photo}" "${cible}/${annee}/${mois}/${jour}/${photo}"
}
fi
done
8<---

Tout a marché selon mes désirs, mais j'aimerais savoir :

1- comment optimiser et alléger la deuxième partie
2- comment l'intégrer à la première. J'ai bien essayé de la glisser
entre "-exec" et "\;" mais sans succès :(

Merci par avance de vos lumières.

--
Jo
"Don't suffer from insanity, enjoy every minute of it."

7 réponses

1 2
Avatar
Anonyme
Laurent Pertois wrote:

Vincent Lefevre <vincent+ wrote:

> Dans l'article <1imetc5.13toyna1vcjwfsN%,
> Laurent Pertois écrit:
>
> > $ /Developer/usr/bin/GetFileInfo -d fichier
> > 08/29/2008 00:36:48
>
> Une m*rde américaine. Non merci.

??



Il parlait certainement du format de date, mais bon... On veut faire de
la ligne de commande et on est pas capable de modifier un
affichage......

Tout se perd mon bon monsieur... Ah... Dans l'temps... On se plaignait
pas autant...

--
Anonyme ( jayce <@> mosx.org )
********* MosX.org <http://www.mosx.org/> *********
Ce message est sous licence Creative Commons "by-nc-sa-2.0"
<http://creativecommons.org/licenses/by-nc-sa/2.0/fr/>
Avatar
laurent.pertois
Anonyme wrote:

Laurent Pertois wrote:

> Vincent Lefevre <vincent+ wrote:
>
> > Dans l'article <1imetc5.13toyna1vcjwfsN%,
> > Laurent Pertois écrit:
> >
> > > $ /Developer/usr/bin/GetFileInfo -d fichier
> > > 08/29/2008 00:36:48
> >
> > Une m*rde américaine. Non merci.
>
> ??

Il parlait certainement du format de date, mais bon... On veut faire de
la ligne de commande et on est pas capable de modifier un
affichage......



Aaahhhhhhh, okokokok

Euh... oui, ça se transforme quand même et il ne faut pas s'étonner
qu'une société américaine utilise ce genre de format, quand même...

Tout se perd mon bon monsieur... Ah... Dans l'temps... On se plaignait
pas autant...



Oui, c'était mieux avaaaant...

--
Politically Correct Unix - UTILITIES
The "touch" command has been removed from the standard distribution due
to its inappropriate use by high-level managers.
Avatar
laurent.pertois
Vincent Lefevre <vincent+ wrote:

Dans l'article <1imetc5.13toyna1vcjwfsN%,
Laurent Pertois écrit:

> $ /Developer/usr/bin/GetFileInfo -d fichier
> 08/29/2008 00:36:48

Une m*rde américaine. Non merci.



Ben :

$ GetFileInfo -d fichier | awk '{print $1}' |awk 'BEGIN {FS="/"}{print
$2"/"$1"/"$3}'

Et hop...

--
Politically Correct Unix - UTILITIES
The "touch" command has been removed from the standard distribution due
to its inappropriate use by high-level managers.
Avatar
Vincent Lefevre
Dans l'article <1imopsl.63r9m3rxhq5iN%,
Anonyme écrit:

On se demande pourquoi tu utilise un ordinateur alors... Tous les Mac
sont des merdes américaines, Windows est une merde américaine, et la
plupart des développeurs bossant sur Linux sont également américain, on
peut donc dire que Linux est une sous merde américaine.



Non, Linux respecte les normes internationales.

--
Vincent Lefèvre - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)
Avatar
Vincent Lefevre
Dans l'article <1imouyq.1u5hrtpcrgm3bN%,
Laurent Pertois écrit:

Ben :



$ GetFileInfo -d fichier | awk '{print $1}' |awk 'BEGIN {FS="/"}{print
$2"/"$1"/"$3}'



Et hop...



Pfff... que c'est lourd!

--
Vincent Lefèvre - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)
Avatar
Anonyme
Vincent Lefevre <vincent+ wrote:

Dans l'article <1imopsl.63r9m3rxhq5iN%,
Anonyme écrit:

> On se demande pourquoi tu utilise un ordinateur alors... Tous les Mac
> sont des merdes américaines, Windows est une merde américaine, et la
> plupart des développeurs bossant sur Linux sont également américain, on
> peut donc dire que Linux est une sous merde américaine.

Non, Linux respecte les normes internationales.



Pas pour tout...

--
Anonyme ( jayce <@> mosx.org )
********* MosX.org <http://www.mosx.org/> *********
Ce message est sous licence Creative Commons "by-nc-sa-2.0"
<http://creativecommons.org/licenses/by-nc-sa/2.0/fr/>
Avatar
laurent.pertois
Vincent Lefevre <vincent+ wrote:

Dans l'article <1imouyq.1u5hrtpcrgm3bN%,
Laurent Pertois écrit:

> Ben :

> $ GetFileInfo -d fichier | awk '{print $1}' |awk 'BEGIN {FS="/"}{print
> $2"/"$1"/"$3}'

> Et hop...

Pfff... que c'est lourd!



Pfff... fais mieux...

Et non, linux n'est pas une option, il n'y a pas GetFileInfo et les
outils fournis ne sont pas sûrs de fournir la date de création comme tu
l'as toi-même remarqué.

--
Politically Correct Unix - UTILITIES
The "touch" command has been removed from the standard distribution due
to its inappropriate use by high-level managers.
1 2