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

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

Re: Traiter des fichiers dans des sous-dossiers

Message par Nerva »

Dernier message de la page précédente :

Fichier test.sh créé avec EditPadPro sous Wine.
Linux Mint 22.3 Zena | Mate
Avatar du membre
arghlub
Administrateur du site
Messages : 11560
Enregistré le : dim. 21 mai 2017 08:19
Localisation : Provence

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) CPU Intel I7-7700K | CG Nvidia GTX 1080 | RAM 16Go | tripleBoot : LMint 22.3 | Debian 12 | MX Linux | XFCE
Tour2 (custom) CPU AMD Athlon 5200+ | CG Nvidia GTX 560 | RAM 6Go | FreeBSD XFCE
Portable1 MSI GF75 Thin 9SC | CPU Intel I7-9750H | CG Nvidia GTX 1650 | RAM 32Go | dualBoot : LMint 22.1 | MX Linux | XFCE
Portable2 MacBook Air A1466 | CPU Intel I5-5250U | CG Intel HD Graphics 6000 | RAM 8Go | dualBoot : macOS Sierra | MX Linux XFCE
─────( pour une informatique libre ! )─────
Avatar du membre
Nerva
Messages : 478
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 22.3 Zena | Mate
Avatar du membre
Nerva
Messages : 478
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 22.3 Zena | Mate
Avatar du membre
Nerva
Messages : 478
Enregistré le : lun. 4 mars 2019 18:48

Re: Traiter des fichiers dans des sous-dossiers

Message par Nerva »

Oui ça fonctionne parfaitement. Plus qu'à mettre tout ça dans un sh. :)
Linux Mint 22.3 Zena | Mate
Avatar du membre
arghlub
Administrateur du site
Messages : 11560
Enregistré le : dim. 21 mai 2017 08:19
Localisation : Provence

Re: Traiter des fichiers dans des sous-dossiers

Message par arghlub »

Comme le dit cyrille, merci de mettre un attribut "Résolu" au sujet si tout est ok pour toi : voir tuto ici ;)
Tour1 (custom) CPU Intel I7-7700K | CG Nvidia GTX 1080 | RAM 16Go | tripleBoot : LMint 22.3 | Debian 12 | MX Linux | XFCE
Tour2 (custom) CPU AMD Athlon 5200+ | CG Nvidia GTX 560 | RAM 6Go | FreeBSD XFCE
Portable1 MSI GF75 Thin 9SC | CPU Intel I7-9750H | CG Nvidia GTX 1650 | RAM 32Go | dualBoot : LMint 22.1 | MX Linux | XFCE
Portable2 MacBook Air A1466 | CPU Intel I5-5250U | CG Intel HD Graphics 6000 | RAM 8Go | dualBoot : macOS Sierra | MX Linux XFCE
─────( pour une informatique libre ! )─────
Avatar du membre
Nerva
Messages : 478
Enregistré le : lun. 4 mars 2019 18:48

Re: Traiter des fichiers dans des sous-dossiers

Message par Nerva »

Eh bien ça fonctionne parfaitement et c'est encore plus souple de pouvoir choisir le dossier source. :P J'ai juste ce message qui s'affiche avant l'exécution :

Code : Tout sélectionner

Gtk-Message: 10:02:27.950: GtkDialog mapped without a transient parent. This is discouraged.
Merci beaucoup. ;)
Linux Mint 22.3 Zena | Mate
Avatar du membre
Nerva
Messages : 478
Enregistré le : lun. 4 mars 2019 18:48

Re: Traiter des fichiers dans des sous-dossiers

Message par Nerva »

J'ai parlé trop vite. Ca ne fonctionne pas lorsque les noms de dossiers comprennent des espaces. :cry:
Linux Mint 22.3 Zena | Mate
Avatar du membre
Nerva
Messages : 478
Enregistré le : lun. 4 mars 2019 18:48

Re: Traiter des fichiers dans des sous-dossiers

Message par Nerva »

Je ne comprends pas. Maintenant ceci fonctionne avec les espaces :

Code : Tout sélectionner

find . -depth -name '*.wav' -execdir bash -c '[[ -f $0 ]] &&  flac -7 --replay-gain "$0" ' {} \;
Pourtant c'est la même chose qu'avec Zenity.
Linux Mint 22.3 Zena | Mate
Avatar du membre
Nerva
Messages : 478
Enregistré le : lun. 4 mars 2019 18:48

Re: Traiter des fichiers dans des sous-dossiers

Message par Nerva »

Et je comprends encore moins. Je viens de relancer ton script avec Zenity et maintenant il fonctionne !
Linux Mint 22.3 Zena | Mate
Avatar du membre
Nerva
Messages : 478
Enregistré le : lun. 4 mars 2019 18:48

Re: Traiter des fichiers dans des sous-dossiers

Message par Nerva »

Je suis déjà en train d'essayer de le compléter. Après conversion :

1) Suppression des fichiers WAV (devenus inutiles).
2) Déplacement des arborescences de /Audio/Conversion à /Musique/Albums.

Merci encore. ;)
Linux Mint 22.3 Zena | Mate
Répondre