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 09/12/2008, à 11:26

Draky

Opérations sur plusieurs fichiers d'un répertoire

Salut

Je cherche un petit bout de ligne de commande mais Saint Google ne m'a rien trouvé...

Dans un répertoire, j'ai plusieurs fichiers que je cherche à compresser individuellement (1 par archive) avec une ligne de commande de type "7za a xxxxx nom du fichier".
Et ainsi de suite pour chaque fichier.

Une fois chaque fichier fini, hop on s'arrête, sinon on va finir avec des fichiers qui se compressent à l'infini.
Eventuellement envisageable, une commande qui déplace ou supprime le fichier qui vient d'être compressé.

Récapitulatif :

1) compression d'un fichier vers un autre répertoire
2) déplacement du fichier source non compressé vers un autre répertoire OU suppression
3) on recommence avec le suivant
4) on rend gentiment la main smile

En fait, je suppose qu'une ligne de commande devrait suffire ou du "bash" mais comme je ne m'y connais pas pour ça...

Merci smile

Hors ligne

#2 Le 09/12/2008, à 11:52

Compte anonymisé

Re : Opérations sur plusieurs fichiers d'un répertoire

Salut

Tu peux essayer avec find en tapant une ligne de ce type :
find  /ton_rep_origine  -name   *.txt    -exec 7za  a  /ton_rep_destination/{}.zip  {} \;  -delete

Va te créer une archive pour chaque fichier *.txt du répertoire d'origine (les sous-dossiers sont traiter  dans le répertoire de destination en lui donnant  l'extention .zip et en recréant l'arborescence.

Tu dois pouvoir adapter à ta convenance.

@+

Attention au -delete. Il supprime les fichiers d'origine

Dernière modification par Compte anonymisé (Le 09/12/2008, à 12:02)

#3 Le 09/12/2008, à 13:38

Draky

Re : Opérations sur plusieurs fichiers d'un répertoire

Ca marche pas.

 find -name *.txt -exec 7za a /media/DIVERS300/TXT/NewFolder/{}.7z {} \; -delete
find: paths must precede expression: 1.txt
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]

Le répertoire source contient 1.txt et 2.txt pour tester.

Par contre, avec un seul des deux, il le compresse et le supprime bien après.

Dernière modification par Draky (Le 09/12/2008, à 13:38)

Hors ligne

#4 Le 09/12/2008, à 14:37

Compte anonymisé

Re : Opérations sur plusieurs fichiers d'un répertoire

Draky a écrit :

Ca marche pas.

find -name *.txt -exec 7za a /media/DIVERS300/TXT/NewFolder/{}.7z {} \; -delete
find: paths must precede expression: 1.txt
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]

Le répertoire source contient 1.txt et 2.txt pour tester.

Par contre, avec un seul des deux, il le compresse et le supprime bien après.

Le premier paramètre de find est le répertoire de départ de la recherche :
soit de type /sss/dddd/rrr  en partant de la racine
soit de type xxx/zzz/yyy  pour un répertoire en partant du repertoire courant
soit de type . pour le repertoire courant (celui où tu te trouves)

find . -name *.txt -exec 7za a /media/DIVERS300/TXT/NewFolder/{}.7z {} \; -delete

devrait fonctionner.

@+

Dernière modification par Compte anonymisé (Le 09/12/2008, à 14:39)

#5 Le 09/12/2008, à 15:09

Draky

Re : Opérations sur plusieurs fichiers d'un répertoire

Non, toujours pas.

find . -name *.txt -exec 7za a /media/DIVERS300/TXT/NewFolder/{}.7z {} \; -delete
find: paths must precede expression: 2.txt
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]

Il trouve le 2.txt ne veut pas y toucher.

 find /media/DD300/txt/ -name *.txt -exec 7za a /media/DIVERS300/TXT/NewFolder/{}.7z {} \; -delete
find: paths must precede expression: 2.txt
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]

Idem, j'ai juste rajouté le path au cas où, sachant que de toute façon je lance cette commande DANS le répertoire où se trouve les 2 fichiers .txt (1.txt et 2.txt).

Hors ligne

#6 Le 09/12/2008, à 15:19

Compte anonymisé

Re : Opérations sur plusieurs fichiers d'un répertoire

C'est vrai j'ai testé.
Bon c'est tout con. Remplace par :

find . -name "*.txt" -exec 7za a /media/DIVERS300/TXT/NewFolder/{}.7z {} \; -delete

@+

#7 Le 09/12/2008, à 21:48

Draky

Re : Opérations sur plusieurs fichiers d'un répertoire

Ca marche smile

Merci !

Hors ligne