Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 06/06/2007, à 11:03

soupaloignon

[Résolu] Copie du répertoire courant ?

Bonjour,

Je suis en train de bidouiller un script nautilus. Il me sert à transformer des images en noir et blanc.

Dans le répertoire qui contient les images à transformer j'ouvre le script.

la 1ere action va etre de créer un répertoire à l'intérieur du répertoire courant

mkdir noir-et-blanc

la 2eme action va être de copier le contenu du répertoire courant dans le dossier créé, et c'est là que ça coince.
Comment indiquer à la commande "cp" que c'est le contenu du répertoire courant qui doit être copié ?
et comment exclure le dossier "noir-et-blanc" de la copie ?

Merci d'avance pour vos réponses

Edit :
La 3éme action va être d'appliquer la commande suivante :
mogrify -modulate 100,0,0 *.jpg
au contenu du dossier wink

Dernière modification par soupaloignon (Le 06/06/2007, à 11:23)


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#2 Le 06/06/2007, à 11:09

cduray

Re : [Résolu] Copie du répertoire courant ?

pourquoi pas simplement
  cp *.jpg noir-et-blanc
??

Hors ligne

#3 Le 06/06/2007, à 11:13

karikula

Re : [Résolu] Copie du répertoire courant ?

même si tu fais cp * noir-et-blanc, cp va juste te dire qu'il ne peux pas copier noir-et-blanc dans noir-et-blanc et c'est tout

 
~/tmp/toto_ 
 $  ls
total 0

 ~/tmp/toto_ 
 $  touch titi toto tata

 ~/tmp/toto_ 
 $  mkdir dossier

 ~/tmp/toto_ 
 $  ls -l       
total 4
drwxrwxr-x    2 st08285  atsu         4096 Jun  6 12:12 dossier/
-rw-rw-r--    1 st08285  atsu            0 Jun  6 12:11 tata
-rw-rw-r--    1 st08285  atsu            0 Jun  6 12:11 toto
-rw-rw-r--    1 st08285  atsu            0 Jun  6 12:11 titi

 ~/tmp/toto_ 
 $  ls
dossier  tata     titi     toto

 ~/tmp/toto_ 
 $  ls -l
total 8
drwxrwxr-x   2 st08285  atsu        4096 Jun  6 12:12 dossier
-rw-rw-r--   1 st08285  atsu           0 Jun  6 12:11 tata
-rw-rw-r--   1 st08285  atsu           0 Jun  6 12:11 titi
-rw-rw-r--   1 st08285  atsu           0 Jun  6 12:11 toto

 ~/tmp/toto_ 
 $  cp * dossier 
cp: dossier: is a directory

 ~/tmp/toto_ 
 $  ls -l
total 4
drwxrwxr-x    2 st08285  atsu         4096 Jun  6 12:12 dossier/
-rw-rw-r--    1 st08285  atsu            0 Jun  6 12:11 tata
-rw-rw-r--    1 st08285  atsu            0 Jun  6 12:11 toto
-rw-rw-r--    1 st08285  atsu            0 Jun  6 12:11 titi

 ~/tmp/toto_ 
 $  ls -l dossier/
total 0
-rw-rw-r--   1 st08285  atsu           0 Jun  6 12:12 tata
-rw-rw-r--   1 st08285  atsu           0 Jun  6 12:12 titi
-rw-rw-r--   1 st08285  atsu           0 Jun  6 12:12 toto

K.

Hors ligne

#4 Le 06/06/2007, à 11:21

mirmidon

Re : [Résolu] Copie du répertoire courant ?

Salut,

Je t'aurai bien aidé, mais je suis obligé de travailler sous Windows 98 pour le moment.

Tu peux passer par un dossier tampon, comme en programmation en :
1) Créant un répertoire temporaire dans /tmp mkdir /tmp/noir_et_blanc (ou à la racine de ton /home/ton_nom si tu n'as pas accès à /tmp)
2) Recopie toutes tes données dedans cp -fr * /tmp/noir_et_blanc
3) Recopie ton dossier temporaire dans ton dossier courant cp -fr /tmp/noir_et_blanc
4) Efface le dossier temporaire rm -fr /tmp/noir_et_blanc (attention pas de faute de frappe)


$ sudo make plaisir
Quand l'informatique redevient un plaisir.

The Ubuntu Counter Project - user number #10290

Hors ligne

#5 Le 06/06/2007, à 11:22

soupaloignon

Re : [Résolu] Copie du répertoire courant ?

cduray a écrit :

pourquoi pas simplement
  cp *.jpg noir-et-blanc
??

J'avais testé avec 

cp *.jpg /noir-et-blanc

et ça ne fonctionnait pas. Mais ta ligne marche impeccable, merci big_smile


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#6 Le 06/06/2007, à 11:32

karikula

Re : [Résolu] Copie du répertoire courant ?

c'est pas "/" qu'il fallait mettre mais "./"

cp *.jpg /noir-et-blanc

==> tu lui dis de copier tous tes jpg dans le dossier /noir-et-blanc (chemin absolu, donc à partir de la racine de l'arbo.)
"./" te permet de lui donner un chemin relatif "./noir-et-blanc" signifie le dossier noir-et-blanc "fils du dossier courant"

tu vois bien la différence ?

K.

Hors ligne

#7 Le 06/06/2007, à 11:45

soupaloignon

Re : [Résolu] Copie du répertoire courant ?

karikula a écrit :

c'est pas "/" qu'il fallait mettre mais "./"

cp *.jpg /noir-et-blanc

==> tu lui dis de copier tous tes jpg dans le dossier /noir-et-blanc (chemin absolu, donc à partir de la racine de l'arbo.)
"./" te permet de lui donner un chemin relatif "./noir-et-blanc" signifie le dossier noir-et-blanc "fils du dossier courant"

tu vois bien la différence ?

K.

Oui je viens de voir, merci pour cette info (qui en plus est logique)

je viens de tester et effectivement :
cp *.jpg ./noir-et-blanc
fait la même chose que :
cp *.jpg noir-et-blanc


Je laisse le petit script nautilus que j'ai écris, bon en fait c'est juste une succession de ligne de commande, mais si cela est utile à quelqu'un wink



#!/bin/bash


mkdir noir-et-blanc
cp *.jpg ./noir-et-blanc
cd noir-et-blanc
mogrify -modulate 100,0,0 *.jpg

Dernière modification par soupaloignon (Le 06/06/2007, à 12:57)


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#8 Le 06/06/2007, à 12:38

jaywax

Re : [Résolu] Copie du répertoire courant ?

Heu, j'veux pas jouer mon relou, mais le "fi" se trouve un peu tout seul dans ton script big_smile


O bé nan chui sotte c'est du souedois...

Hors ligne

#9 Le 06/06/2007, à 12:41

soupaloignon

Re : [Résolu] Copie du répertoire courant ?

jaywax a écrit :

Heu, j'veux pas jouer mon relou, mais le "fi" se trouve un peu tout seul dans ton script big_smile

T'es pas relou, je n'y connais rien big_smile

Alors explique moi ce qu'est ce "fi"


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#10 Le 06/06/2007, à 12:47

valAa

Re : [Résolu] Copie du répertoire courant ?

"fi", c'est "if" à l'envers, c'est pour fermer une boucle if, qui dans ton cas n'a pas été ouverte wink

Hors ligne

#11 Le 06/06/2007, à 12:57

soupaloignon

Re : [Résolu] Copie du répertoire courant ?

Merci pour l'info big_smile

edit : j'ai modifié le script


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#12 Le 06/06/2007, à 13:04

soupaloignon

Re : [Résolu] Copie du répertoire courant ?

Puisqu'il y en a qui taquinent le code ici wink...

Une fois cette transformation en noir et blanc faite, je voudrai envoyer le contenu du dossier (les images couleurs + le dossier "noir-et-blanc" et ses images) dans un dossier "Final".

Ce dossier "Final" contient des sous dossiers numérotés 001 002 003

Comment faire pour que le script teste les noms des dossiers présents dans le dossier "final", trouve le dernier (dans l'exemple "003") et créé un nouveau dossier en incrémentant d'une unité la valeur du dernier dossier trouvé (donc création d'un dossier "004") ?


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#13 Le 06/06/2007, à 13:21

cduray

Re : [Résolu] Copie du répertoire courant ?

Ben, en supposant que ton script soit lancé dans le répertoire parent au dossier Final, ça donnerait un truc du style:

# obtenir le numéro de sous-rép courant
curr=`ls -1 Final |tail -1`
# +1
n=`expr $curr + 1`
# formatter en 3 digits, leading 0's
nxt=`printf "%03d" $n`
#créer
mkdir Final/$nxt
#copier...
tar -cf - *.jpg noir-et-blanc | (cd Final/$nxt && tar -xvf - )

Enfin, grosso modo

C

Dernière modification par cduray (Le 06/06/2007, à 13:25)

Hors ligne

#14 Le 06/06/2007, à 14:41

soupaloignon

Re : [Résolu] Copie du répertoire courant ?

cduray a écrit :

Ben, en supposant que ton script soit lancé dans le répertoire parent au dossier Final, ça donnerait un truc du style:

# obtenir le numéro de sous-rép courant
curr=`ls -1 Final |tail -1`
# +1
n=`expr $curr + 1`
# formatter en 3 digits, leading 0's
nxt=`printf "%03d" $n`
#créer
mkdir Final/$nxt
#copier...
tar -cf - *.jpg noir-et-blanc | (cd Final/$nxt && tar -xvf - )

Enfin, grosso modo

C

J'adore le "grosso modo" big_smile. Ton script marche nickel, c'est génial !!!!!

J'ai juste eu à modifier le chemin vers le dossier "Final", en rentrant un chemin absolu. De cette manière je peux envoyer les fichiers quel que soit l'endroit d'où j'exécute le script.

Un grand merci !!!!


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#15 Le 06/06/2007, à 16:16

soupaloignon

Re : [Résolu] Copie du répertoire courant ?

Bon, j'ai parlé trop vite.

En fait cela a fonctionné dans mes tests car le chemin d'accès au dossier "Final" ne comportait pas d'espaces dans les noms de dossiers.
Lorsque j'ai voulu le faire vers le vrai dossier "Final", dont le chemin comporte des noms avec espaces, plus rien ne fonctionne.

J'ai testé avec des simples et doubles quotes, avec le \ devant les espaces mais rien n'y fait. Tu as une idée ?


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#16 Le 07/06/2007, à 11:37

cduray

Re : [Résolu] Copie du répertoire courant ?

Hello

Mettre ton nom de répertoire entre quotes (double quotes si tu as un nom de variable dedans).

Par exemple, pour accéder à
/home/marcel va a la plage/Final

Tu peux entrer soit
   cd /home/marcel\ va\ a\ la\ plage/Final
ou
   cd "/home/marcel va a la plage/Final"
ou encore
  cd '/home/marcel va a la plage/Final'

La différence entre '' et "" ne se fera sentir que si tu as une variable là-dedans.

C

Hors ligne

#17 Le 07/06/2007, à 13:32

soupaloignon

Re : [Résolu] Copie du répertoire courant ?

Hello, merci de ta réponse.

J'avais déjà essayé, avant de poster le message précédent, le \ avant l'espace et les doubles et simples quote, mais cela n'avait rien donné, d'où mon message.

Il n'y a qu'un cas de figure où cela fonctionne, mais à moitié. En mettant du simple quote, il y a bien un dossier créé, avec ce qu'il faut dedans, mais par contre il s'appelle "$nxt".
Le problème doit venir, comme tu le disais d'ailleurs, de cette variable.

J'ai fait quelques tests en bougeant les quotes, un peu au pif je dois dire wink, mais rien n'y fait.

Ci joint les différentes essais, le chemin marqué correspond au chemin réel de mon arborescence. Si tu as une idée big_smile

# obtenir le numéro de sous-rép courant
#1 curr=`ls -1 /home/soupaloignon/01Perso/00\ perso/02\ Patrick/marie/marie\ et\ patrick/marie |tail -1`

#2 curr=`ls -1 "/home/soupaloignon/01Perso/00 perso/02 Patrick/marie/marie et patrick/marie"  |tail -1`
curr=`ls -1 '/home/soupaloignon/01Perso/00 perso/02 Patrick/marie/marie et patrick/marie'  |tail -1`


# +1
n=`expr $curr + 1`

# formatter en 3 digits, leading 0's
nxt=`printf "%03d" $n`

#créer
#1 mkdir /home/soupaloignon/01Perso/00\ perso/02\ Patrick/marie/marie\ et\ patrick/marie/$nxt
#2 mkdir "/home/soupaloignon/01Perso/00 perso/02 Patrick/marie/marie et patrick/marie/$nxt"
#3 mkdir '/home/soupaloignon/01Perso/00 perso/02 Patrick/marie/marie et patrick/marie/$nxt'
#4 mkdir '/home/soupaloignon/01Perso/00 perso/02 Patrick/marie/marie et patrick/marie'/$nxt
mkdir '/home/soupaloignon/01Perso/00 perso/02 Patrick/marie/marie et patrick/marie/'$nxt

#copier...
#1 tar -cf - *.jpg noir-et-blanc | (cd /home/soupaloignon/01Perso/00\ perso/02\ Patrick/marie/marie\ et\ patrick/marie/$nxt &&  tar -xvf - )

#2 tar -cf - *.jpg noir-et-blanc | (cd "/home/soupaloignon/01Perso/00 perso/02 Patrick/marie/marie et patrick/marie/$nxt" && tar -xvf - )

#3 tar -cf - *.jpg noir-et-blanc | (cd '/home/soupaloignon/01Perso/00 perso/02 Patrick/marie/marie et patrick/marie/$nxt' && tar -xvf - )

#4 tar -cf - *.jpg noir-et-blanc | (cd '/home/soupaloignon/01Perso/00 perso/02 Patrick/marie/marie et patrick/marie'/$nxt && tar -xvf - )

tar -cf - *.jpg noir-et-blanc | (cd '/home/soupaloignon/01Perso/00 perso/02 Patrick/marie/marie et patrick/marie/'$nxt && tar -xvf - )

==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#18 Le 07/06/2007, à 14:08

cduray

Re : [Résolu] Copie du répertoire courant ?

Ta version 2 devrait marcher.

Enfin, pour éviter de perdre des cheveux dans des erreurs de copier+coller, voici une version avec variable et debugging:

FINAL_DIR="/home/soupaloignon/01Perso/00 perso/02 Patrick/marie/marie et patrick/marie"
curr=`ls -1 "$FINAL_DIR" |tail -1`

echo "Debug: dernier repertoire: $curr"

n=`expr $curr + 1`
nxt=`printf "%03d" $n`

echo "Debug: repertoire suivant: $nxt"

mkdir "$FINAL_DIR/$nxt" && echo "Debug: la creation du repertoire est ok"

tar -cf - *.jpg noir-et-blanc | (cd "$FINAL_DIR/$nxt" && tar -xvf - )

En ksh, tu peux rajouter

 set -x

en début de script pour activer un tracing ligne par ligne, je subodore que bash a repris cette fonctionnalité.

C

Hors ligne

#19 Le 07/06/2007, à 14:35

soupaloignon

Re : [Résolu] Copie du répertoire courant ?

Un grand merci pour mes cheveux wink ton dernier script fonctionne nickel big_smile

En ce qui concerne la version 2, non, cela ne fonctionnait pas. J'avais testé toutes les versions possibles (du moins celles que j'ai imaginé) avant de poster.

Tu aurais quelques liens pour apprendre à faire ce type de programmation ? Niveau débutant ++++

cool

Dernière modification par soupaloignon (Le 07/06/2007, à 14:36)


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne