Résolu le 13-03-19 Traiter des fichiers dans des sous-dossiers

Questions concernant les lignes de commandes
Avatar du membre
cyrille
Administrateur du site
Messages : 12285
Enregistré le : mar. 19 sept. 2017 08:49
Localisation : Nowhere
Contact :

Re: Traiter des fichiers dans des sous-dossiers

Message par cyrille »

Dernier message de la page précédente :

c'est quoi ce truc ?? jamais dit ni écrit

Code : Tout sélectionner

/bin/sh^M
mais

Code : Tout sélectionner

/bin/sh
C'est l'appel de ton shell ;)
?séuqartéd sel ruoP / sécnoféd sel ruoP / sreiruréB sel ruoP / ?étéicos elleuQ

https://crust.ovh

Avatar du membre
Nerva
Messages : 376
Enregistré le : lun. 4 mars 2019 18:48

Re: Traiter des fichiers dans des sous-dossiers

Message par Nerva »

Pour l'instant je n'ai rien modifié :

Code : Tout sélectionner

#!/bin/sh

dossierDeTravail="/home/nerva/Audio/Conversion";

recursiveSearch() {
    [ -r "$1" ] && [ -x "$1" ] || return 1 # Si on peut fouiller dans le dossier
    [ "`ls "$1" | wc -l`" == "0" ] && return 0 # Si le dossier est vide
    for file in "$1"/*; do
        if [ -d "$file" ]; then
            recursiveSearch "$file"
        fi
        echo "$file"
    done
}

recursiveSearch  $dossierDeTravail
Linux Mint 21.3 Virginia | Cinnamon 6.0.4

Avatar du membre
cyrille
Administrateur du site
Messages : 12285
Enregistré le : mar. 19 sept. 2017 08:49
Localisation : Nowhere
Contact :

Re: Traiter des fichiers dans des sous-dossiers

Message par cyrille »

tu as créé ton fichier avec quel logiciel ?
?séuqartéd sel ruoP / sécnoféd sel ruoP / sreiruréB sel ruoP / ?étéicos elleuQ

https://crust.ovh

Avatar du membre
Nerva
Messages : 376
Enregistré le : lun. 4 mars 2019 18:48

Re: Traiter des fichiers dans des sous-dossiers

Message par Nerva »

Fichier test.sh créé avec EditPadPro sous Wine.
Linux Mint 21.3 Virginia | Cinnamon 6.0.4

Avatar du membre
cyrille
Administrateur du site
Messages : 12285
Enregistré le : mar. 19 sept. 2017 08:49
Localisation : Nowhere
Contact :

Re: Traiter des fichiers dans des sous-dossiers

Message par cyrille »

Utilise des logiciel Linux. ...

mousepad, leafpad,xed, bluefish sinon tu auras forcement des soucis d'encodage... (iso truc machin chouette vs UTF-8)

ou sous terminal : nano

ton erreur vient de là

Drole d'idee d'utiliser wine quand pas nécessaire....
?séuqartéd sel ruoP / sécnoféd sel ruoP / sreiruréB sel ruoP / ?étéicos elleuQ

https://crust.ovh

Avatar du membre
arghlub
Administrateur du site
Messages : 10421
Enregistré le : dim. 21 mai 2017 08:19
Localisation : Provence
Contact :

Re: Traiter des fichiers dans des sous-dossiers

Message par arghlub »

Effectivement l'encodage des fichiers W$ n'est pas le même que sous Linux (notamment pour les retour-chariots)
Donc supprime ton script précédent et utilise xed par exemple pour recoller le script de cyrille :

Code : Tout sélectionner

xed test.sh
Tour1 (custom)CM MSI Z270 M3 | CPU Intel I7-7700K | CG Nvidia GTX 1080 | RAM 16Go | tripleBoot : Debian 11 | MXlinux 21 | LMint 19.3 | XFCE
Tour2 (custom)CM Gigabyte | CPU AMD Athlon 5200+ | CG Nvidia GTX 560 | RAM 6Go | FreeBSD 12.1 XFCE
Portable1 MSI GF75 Thin 9SC | CPU Intel I7-9750H | CG Nvidia GTX 1650 | RAM 32Go | dualBoot : LMint 20.2 | MXlinux 21 | XFCE
Portable2 MacBook Air A1466 (2015) | CPU Intel I5-5250U | CG Intel HD Graphics 6000 | RAM 8Go | dualBoot : macOS Sierra | MXlinux 21 XFCE
─────( pour une informatique libre ! -membre en stand-by de l' April.org────────────────

Avatar du membre
Nerva
Messages : 376
Enregistré le : lun. 4 mars 2019 18:48

Re: Traiter des fichiers dans des sous-dossiers

Message par Nerva »

Il n'y a pas d'équivalent à EditPad Pro, ni sous Linux, ni sous Windows. Je ne savais pas que l'encodage pouvait jouer.

J'ai installé MousePad.

Mon fichier, en ayant suivi tes modifications :

Code : Tout sélectionner

#!/bin/sh

dossierDeTravail="/home/nerva/Audio/Conversion";

recursiveSearch() {
    [ -r "$1" ] && [ -x "$1" ] || return 1 # Si on peut fouiller dans le dossier
    [ "`ls "$1" | wc -l`" == "0" ] && return 0 # Si le dossier est vide
    for file in "$1"/*; do
        if [ -d "$file" ]; then
            recursiveSearch "$file"
        fi
        echo "$file" flac -7 --replay-gain $file
    done
}

recursiveSearch  $dossierDeTravail

ls -lR /home/nerva/Audio/Conversion
Retour (pour info, j'ai dédoublé 3 fichiers tests en racine et dans un nouveau dossier) :

Code : Tout sélectionner

./test.sh: 7: [: 4: unexpected operator
/home/nerva/Audio/Conversion/Mix_07.wav flac -7 --replay-gain /home/nerva/Audio/Conversion/Mix_07.wav
/home/nerva/Audio/Conversion/Mix_10.wav flac -7 --replay-gain /home/nerva/Audio/Conversion/Mix_10.wav
/home/nerva/Audio/Conversion/Mix_11.wav flac -7 --replay-gain /home/nerva/Audio/Conversion/Mix_11.wav
./test.sh: 7: [: 3: unexpected operator
/home/nerva/Audio/Conversion/Nouveau dossier/Mix_07.wav flac -7 --replay-gain /home/nerva/Audio/Conversion/Nouveau dossier/Mix_07.wav
/home/nerva/Audio/Conversion/Nouveau dossier/Mix_10.wav flac -7 --replay-gain /home/nerva/Audio/Conversion/Nouveau dossier/Mix_10.wav
/home/nerva/Audio/Conversion/Nouveau dossier/Mix_11.wav flac -7 --replay-gain /home/nerva/Audio/Conversion/Nouveau dossier/Mix_11.wav
/home/nerva/Audio/Conversion/Nouveau dossier/Mix_11.wav flac -7 --replay-gain /home/nerva/Audio/Conversion/Nouveau dossier/Mix_11.wav
/home/nerva/Audio/Conversion:
total 110204
-rwx------ 1 nerva nerva 50996880 déc.   3  2015  Mix_07.wav
-rwx------ 1 nerva nerva 36166988 déc.   6  2015  Mix_10.wav
-rwx------ 1 nerva nerva 25671188 déc.   6  2015  Mix_11.wav
drwxrwxr-x 2 nerva nerva     4096 mars  11 10:26 'Nouveau dossier'

'/home/nerva/Audio/Conversion/Nouveau dossier':
total 110200
-rwx------ 1 nerva nerva 50996880 déc.   3  2015 Mix_07.wav
-rwx------ 1 nerva nerva 36166988 déc.   6  2015 Mix_10.wav
-rwx------ 1 nerva nerva 25671188 déc.   6  2015 Mix_11.wav
Linux Mint 21.3 Virginia | Cinnamon 6.0.4

Avatar du membre
cyrille
Administrateur du site
Messages : 12285
Enregistré le : mar. 19 sept. 2017 08:49
Localisation : Nowhere
Contact :

Re: Traiter des fichiers dans des sous-dossiers

Message par cyrille »

Code : Tout sélectionner

        echo "$file" flac -7 --replay-gain $file
Tu lui demandes la commande suivante :
nom-de-fichier + commande , normal qu'il plante

essaie simplement

Code : Tout sélectionner

 flac -7 --replay-gain $file
Il n'y a pas d'équivalent à EditPad Pro, ni sous Linux, ni sous Windows. Je ne savais pas que l'encodage pouvait jouer.

Code : Tout sélectionner

aptitude show bluefish
pas grave, maintenant tu le sauras.
Les retours à la ligne ne sont pas gérés de la même façon sous Win$ et Linux
Les encodages sont différents.
(de souvenir ça doit être paramétrable dans le logiciel windows (utf-8)
mais ça reste une mauvaise idée de jouer avec des appli win via wine si des logiciels existent sous Linux

Si mousepad, tu peux choisir Dodument/type de documents / Script / SH
(et plus)

;)
Modifié en dernier par cyrille le lun. 11 mars 2019 12:55, modifié 1 fois.
?séuqartéd sel ruoP / sécnoféd sel ruoP / sreiruréB sel ruoP / ?étéicos elleuQ

https://crust.ovh

Avatar du membre
cyrille
Administrateur du site
Messages : 12285
Enregistré le : mar. 19 sept. 2017 08:49
Localisation : Nowhere
Contact :

Re: Traiter des fichiers dans des sous-dossiers

Message par cyrille »

PS lis un peu de doc sur bash avant de te lancer dans des scripts, sinon ça va être dur ;)
https://fr.wikibooks.org/wiki/Programmation_Bash
?séuqartéd sel ruoP / sécnoféd sel ruoP / sreiruréB sel ruoP / ?étéicos elleuQ

https://crust.ovh

Avatar du membre
Nerva
Messages : 376
Enregistré le : lun. 4 mars 2019 18:48

Re: Traiter des fichiers dans des sous-dossiers

Message par Nerva »

Ca fonctionne pour le dossier Conversion mais ça ne traite pas les sous-dossiers qui ont un nom avec espace (j'ai testé un nom en un seul mot et ça marche). J'avais laissé comme nom Nouveau dossier et voilà le retour :

Code : Tout sélectionner

ERROR: can't open input file /home/nerva/Audio/Conversion/Nouveau: Aucun fichier ou dossier de ce type
Linux Mint 21.3 Virginia | Cinnamon 6.0.4

Avatar du membre
cyrille
Administrateur du site
Messages : 12285
Enregistré le : mar. 19 sept. 2017 08:49
Localisation : Nowhere
Contact :

Re: Traiter des fichiers dans des sous-dossiers

Message par cyrille »

une dernière info

Code : Tout sélectionner

man zenity
tu devrais pouvoir te bidouiller un truc "graphique" assez facilement avec choix du répertoire et option d'encodage ;)
?séuqartéd sel ruoP / sécnoféd sel ruoP / sreiruréB sel ruoP / ?étéicos elleuQ

https://crust.ovh

Répondre