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 29/08/2023, à 15:15

GARUDASEB

1er script pour déplacement de fichiers

smile
Bonjour,
Je suis nouveau sur le forum et sur linux ;-)Je possède un nas synology et je fais des manips de fichiers
Je cherche à déplacer des fichiers d'un dossier à un autre
Exemple : Je bouge  les fichiers du dossier A vers le dossier B

Quelques conditions :
- Je fouille dans le dossier A et ses éventuels sous-dossiers
- Je mets tt en majuscule
- Je ne prends que les fichiers vidéos ( y compris les sous-dossiers de A)
- Je déplace (et overwrite) les fichiers videos dans le dossiers B
- Je vide le dossier A

Pour l'instant, j'utilise ce script :
mv /volume1/A/*.{mkv,avi,mp4} /volume2/videos/B/


QQn aurait une idée ?

je suppose que je dois utiliser
mindepth ou maxdepth


QQn aurait-une idée ?

merci à vous
bonne journée
Seb

Dernière modification par GARUDASEB (Le 29/08/2023, à 15:16)

Hors ligne

#2 Le 29/08/2023, à 17:05

Watael

Re : 1er script pour déplacement de fichiers

salut,

je suppose que je dois utiliser
mindepth ou maxdepth

pourquoi ? dans quel contexte ?

Pour l'instant, j'utilise ce script :
mv /volume1/A/*.{mkv,avi,mp4} /volume2/videos/B/

et qu'est-ce qui ne va pas ?


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#3 Le 29/08/2023, à 17:16

FrancisFDZ

Re : 1er script pour déplacement de fichiers

Bonjour,
La mise en majuscules doit-elle faire partie de la commande ?


-- On peut avoir des raisons de se plaindre et n'avoir pas raison de se plaindre --
[Victor Hugo]

Hors ligne

#4 Le 29/08/2023, à 17:24

geole

Re : 1er script pour déplacement de fichiers

Bonjour.
Une commande mv n'écrase pas un fichier existant et donc ne supprime pas le fichier émetteur.
Tu vas devoir ajouter une seconde commande de copie et une troisième de suppression.
De plus si tu ajoutes une conversion en majuscule, tu risques de te retrouver avec plusieurs fichiers émetteurs pour un seul fichier récepteur,

Dernière modification par geole (Le 29/08/2023, à 17:25)


Les grilles de l'installateur https://doc.ubuntu-fr.org/tutoriel/inst … _subiquity
"gedit admin:///etc/fstab" est proscrit,  utilisez "pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY xdg-open /etc/fstab" Voir  https://doc.ubuntu-fr.org/gedit
Les partitions EXT4 des disques externes => https://forum.ubuntu-fr.org/viewtopic.p … #p22697248

En ligne

#5 Le 29/08/2023, à 17:38

erresse

Re : 1er script pour déplacement de fichiers

geole a écrit :

Une commande mv n'écrase pas un fichier existant et donc ne supprime pas le fichier émetteur.

Heu... Tu es sur de toi, là ?

mv -f ...
le man, option -f :
       -f, --force
              ne pas demander de confirmation avant d'écraser

Et comme il s'agit d'un déplacement de fichier et non d'une copie, il n'est pas nécessaire d'effacer la source après le transfert.
Reste que la conversion en majuscules n'est pas une option de mv, il faut trouver une astuce pour l'ajouter.


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois le problème solutionné, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#6 Le 29/08/2023, à 17:50

MicP

Re : 1er script pour déplacement de fichiers

Bonjour

…Reste que la conversion en majuscules n'est pas une option de mv, il faut trouver une astuce pour l'ajouter.

en bash :

mic@deb12:~$ nomFich="nom du fichier"
mic@deb12:~$ echo $nomFich 
nom du fichier
mic@deb12:~$ echo ${nomFich^}
Nom du fichier
mic@deb12:~$ echo ${nomFich^^}
NOM DU FICHIER
mic@deb12:~$ 

Dernière modification par MicP (Le 29/08/2023, à 17:51)

Hors ligne

#7 Le 29/08/2023, à 21:16

GARUDASEB

Re : 1er script pour déplacement de fichiers

Bonsoir,
Merci de la réactivité
Je ne l'avais pas précisé mais je fais tournée mon script en cron task sur le nas synology.
Je ne sais pas si cela peut servir. ;-)

Pour réponde à vos différentes questions :
- Effectivement "mv" déplace les fichiers donc pas besoin de les supprimer aprés
mais s'il y a des dossiers à l'intérieur du dossier A il faudrait les supprimer aprés "mv"
- mv /volume1/A/*.{mkv,avi,mp4} /volume2/videos/B/ --> ce qui ne va pas  : avec cette commande on ne copie que les fichiers *.{mkv,avi,mp4} présents dans le dossier A mais cela ne copie pas les fichiers *.{mkv,avi,mp4} présents dans les éventuels sous-dossiers de A
- paramètres "mindepth ou maxdepth" : J'ai l'impression (je ne suis que novice) que ces paramètres permettent de de déterminer comment +/- la recherche se fait dans les dossiers parents ou enfants.
- "La mise en majuscules doit-elle faire partie de la commande ?" --> oui, je pense qu'il faudrait tout convertir en majuscule pour tout ce qu'il se trouve dans le dossier A dés le début du traitement.
- désolé @MicP, je n'ia pas tout compris à ta formule en post #6.

Merci et bonne soirée à vous

Hors ligne

#8 Le 30/08/2023, à 02:49

Watael

Re : 1er script pour déplacement de fichiers

min/maxdepth sont des options de la commande find. Or, tu ne l'évoques pas.

il existe une "option" bash, qui permet de descendre dans les sous-dossiers :

$ shopt -s globstar
$ mv -t /volume2/videos/B/ /volume1/A/**/*.{mkv,avi,mp4}
$

la mise en majuscule ne peut pas être faite en une fois: on ne peut renommer les fichiers qu'individuellement*.

$ shopt -s globstar nullgob
$ for f in /volume1/A/**/*.{avi,mkv,mp4}; do nomFic=${f##*/}; mv "$f" "/volume2/videos/${nomFic^^}"; done
$

--
* c'est à moitié vrai : on pourrait probablement passer les fichiers du répertoire (encore avec globstar) à rename (que je n'aime pas parce qu'il y en a plusieurs implémentations (des programmes différents porte le même nom), et que je n'utilise donc pas), puis faire le mv (toujours avec globstar).
mais rename traite quand même les fichiers un par un ! smile


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#9 Le 30/08/2023, à 09:27

geole

Re : 1er script pour déplacement de fichiers

erresse a écrit :
geole a écrit :

Une commande mv n'écrase pas un fichier existant et donc ne supprime pas le fichier émetteur.

Heu... Tu es sur de toi, là ?

mv -f ...
le man, option -f :
       -f, --force
              ne pas demander de confirmation avant d'écraser

Bonjour
je ne demande qu'à trouver la bonne option

mv test test1
mv: impossible de déplacer 'test' vers 'test1/test': Le dossier n'est pas vide

mv -f test test1
mv: impossible de déplacer 'test' vers 'test1/test': Le dossier n'est pas vide

mv -v test/* test1
mv: impossible de déplacer 'test/aa' vers 'test1/aa': Le dossier n'est pas vide

mv -fv test/* test1
mv: impossible de déplacer 'test/aa' vers 'test1/aa': Le dossier n'est pas vide

Les grilles de l'installateur https://doc.ubuntu-fr.org/tutoriel/inst … _subiquity
"gedit admin:///etc/fstab" est proscrit,  utilisez "pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY xdg-open /etc/fstab" Voir  https://doc.ubuntu-fr.org/gedit
Les partitions EXT4 des disques externes => https://forum.ubuntu-fr.org/viewtopic.p … #p22697248

En ligne

#10 Le 30/08/2023, à 14:47

Watael

Re : 1er script pour déplacement de fichiers

les conditions réelles sont (parce que tu ne nous dis pas tout) :

$ mkdir test test1
$ >test/aa
$ mv test test1/ #pas de soucis.
$ mkdir test
$ mv test test1/ #LÀ, ça coince !
mv: impossible de déplacer 'test' vers 'test1/test': Le dossier n'est pas vide
$

après sftw, il semble que c'est normal, et qu'il faudrait "revenir" à cp + rm...

Dernière modification par Watael (Le 30/08/2023, à 19:36)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#11 Le 30/08/2023, à 16:17

MicP

Re : 1er script pour déplacement de fichiers

Bonjour

Pour résoudre ce problème, on pourrait utiliser l'option backup de la commande mv
qui permet de renommer automatiquement le fichier (ou répertoire) déjà présent en ajoutant une extention numérotée à son nom.

mic@deb12:~$ mkdir test test1
mic@deb12:~$ >test/aa
mic@deb12:~$ mv test test1/ #pas de soucis.
mic@deb12:~$ mkdir test
mic@deb12:~$ mv --backup=numbered test test1/ #LÀ, ça passe
mic@deb12:~$ ls -laR test test1
ls: impossible d'accéder à 'test': Aucun fichier ou dossier de ce type
test1:
total 16
drwxr-xr-x  4 mic mic 4096 30 août  17:14 .
drwxr-xr-x 26 mic mic 4096 30 août  17:14 ..
drwxr-xr-x  2 mic mic 4096 30 août  17:14 test
drwxr-xr-x  2 mic mic 4096 30 août  17:13 test.~1~

test1/test:
total 8
drwxr-xr-x 2 mic mic 4096 30 août  17:14 .
drwxr-xr-x 4 mic mic 4096 30 août  17:14 ..

test1/test.~1~:
total 8
drwxr-xr-x 2 mic mic 4096 30 août  17:13 .
drwxr-xr-x 4 mic mic 4096 30 août  17:14 ..
-rw-r--r-- 1 mic mic    0 30 août  17:13 aa
mic@deb12:~$ 
mic@deb12:~$ 
mic@deb12:~$ mkdir test
mic@deb12:~$ >test/BB
mic@deb12:~$ mv --backup=numbered test test1/ #LÀ, ça passe aussi
mic@deb12:~$ ls -laR test test1
ls: impossible d'accéder à 'test': Aucun fichier ou dossier de ce type
test1:
total 20
drwxr-xr-x  5 mic mic 4096 30 août  17:25 .
drwxr-xr-x 26 mic mic 4096 30 août  17:25 ..
drwxr-xr-x  2 mic mic 4096 30 août  17:24 test
drwxr-xr-x  2 mic mic 4096 30 août  17:13 test.~1~
drwxr-xr-x  2 mic mic 4096 30 août  17:14 test.~2~

test1/test:
total 8
drwxr-xr-x 2 mic mic 4096 30 août  17:24 .
drwxr-xr-x 5 mic mic 4096 30 août  17:25 ..
-rw-r--r-- 1 mic mic    0 30 août  17:24 BB

test1/test.~1~:
total 8
drwxr-xr-x 2 mic mic 4096 30 août  17:13 .
drwxr-xr-x 5 mic mic 4096 30 août  17:25 ..
-rw-r--r-- 1 mic mic    0 30 août  17:13 aa

test1/test.~2~:
total 8
drwxr-xr-x 2 mic mic 4096 30 août  17:14 .
drwxr-xr-x 5 mic mic 4096 30 août  17:25 ..
mic@deb12:~$ 

Dernière modification par MicP (Le 30/08/2023, à 16:28)

Hors ligne

#12 Le 30/08/2023, à 18:13

geole

Re : 1er script pour déplacement de fichiers

Comme vous le constater le problème n'est pas si simple car faire

mv test1 test1ancien
mv test test1

ne fait pas une fusion des données
Nota.  Je connais ce problème depuis pas mal de temps à cause des liens symboliques.
La première fois on peut faire un mv mais pas les fois suivantes.

Dernière modification par geole (Le 30/08/2023, à 18:16)


Les grilles de l'installateur https://doc.ubuntu-fr.org/tutoriel/inst … _subiquity
"gedit admin:///etc/fstab" est proscrit,  utilisez "pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY xdg-open /etc/fstab" Voir  https://doc.ubuntu-fr.org/gedit
Les partitions EXT4 des disques externes => https://forum.ubuntu-fr.org/viewtopic.p … #p22697248

En ligne

#13 Le 30/08/2023, à 19:41

Watael

Re : 1er script pour déplacement de fichiers

c'est un vrai complication, qui mériterait sans doute sa propre discussion, parce que ça ne concerne pas GARUDASEB, qui veut uniquement déplacer des fichiers.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#14 Le 31/08/2023, à 06:38

GARUDASEB

Re : 1er script pour déplacement de fichiers

Bonjour a vous
Merci de vos échanges, désolé je n'ai pas pu me connecter hier.
Je regarde ce que vous proposez dans la journée.

A+ seb

Hors ligne

#15 Le 31/08/2023, à 12:23

geole

Re : 1er script pour déplacement de fichiers

Bonjour

man rename a écrit :

       To translate uppercase names to lower, you'd use
               rename 'y/A-Z/a-z/' *


Les grilles de l'installateur https://doc.ubuntu-fr.org/tutoriel/inst … _subiquity
"gedit admin:///etc/fstab" est proscrit,  utilisez "pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY xdg-open /etc/fstab" Voir  https://doc.ubuntu-fr.org/gedit
Les partitions EXT4 des disques externes => https://forum.ubuntu-fr.org/viewtopic.p … #p22697248

En ligne

#16 Le 01/09/2023, à 09:50

GARUDASEB

Re : 1er script pour déplacement de fichiers

Bonjour à vous,
Merci de tous vos échanges, J'y vois plus clair
Dans un premier temps, je vais résumer avec mes mots de débutant linux

1- Pour tous les fichiers et dossiers (et sous-dossiers) présents dans le Dossier A, je les transforme en majuscule
Find + rename ?
2- Je déplace tous les fichiers *.{mkv,avi,mp4} présents dans A (et les sous-dossiers)  vers le dossiers B
Find  + mv ???
3 - Je vide le dossier A de tout : sous-dossiers et fichiers non sélectionnés.

Pour les étapes 1 et 2 je suppose qu'il faut faut des boucles (je fais un peu de VBA excel ;  for each ....)

Merci à vous

bonnes journée

Seb

Hors ligne

#17 Le 01/09/2023, à 10:16

Watael

Re : 1er script pour déplacement de fichiers

1- peut-être pas besoin de find. si rename peut faire du récursif, ou ou s'il peut prendre une liste de fichiers (en utilisant globstar)
2- mv peut prendre une liste de fichier (en utilisant globstar). Mais, comme cela a été montré, mv ne peut pas déplacer des fichiers vers un répertoire non-vide.
3- c'est toi qui voit. smile

Pour les étapes 1 et 2 je suppose qu'il faut faut des boucles

pas forcément... et sûrement pas avec find ! mais il n'est peut-être pas nécessaire. wink


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#18 Le 01/09/2023, à 20:38

geole

Re : 1er script pour déplacement de fichiers

Bonsoir.
J'ai réalisé un script qui semble faire la demande.
Mais ma connexion internet dysfonctionne. Je ne peux pas le poster depuis mon iPAD.
Mais le principe est  basé sur find et une boucle qui traite fichier par fichier une commande élémentaire mv. Il fabrique les sous-répertoires si absents et assure le passage en majuscules sans rename.
( Je ne me vois pas  le refrapper depuis un IPAD).

Dernière modification par geole (Le 01/09/2023, à 20:45)


Les grilles de l'installateur https://doc.ubuntu-fr.org/tutoriel/inst … _subiquity
"gedit admin:///etc/fstab" est proscrit,  utilisez "pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY xdg-open /etc/fstab" Voir  https://doc.ubuntu-fr.org/gedit
Les partitions EXT4 des disques externes => https://forum.ubuntu-fr.org/viewtopic.p … #p22697248

En ligne

#19 Le 01/09/2023, à 20:52

Watael

Re : 1er script pour déplacement de fichiers

non. c'est ou find, ou une boucle. Pas les deux !


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#20 Le 01/09/2023, à 21:00

geole

Re : 1er script pour déplacement de fichiers

Tu pourras améliorer les deux boucles lorsque mon fournisseur aura réparé et que j'aurais pu poster.

Dernière modification par geole (Le 01/09/2023, à 21:01)


Les grilles de l'installateur https://doc.ubuntu-fr.org/tutoriel/inst … _subiquity
"gedit admin:///etc/fstab" est proscrit,  utilisez "pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY xdg-open /etc/fstab" Voir  https://doc.ubuntu-fr.org/gedit
Les partitions EXT4 des disques externes => https://forum.ubuntu-fr.org/viewtopic.p … #p22697248

En ligne

#21 Le 01/09/2023, à 21:10

Watael

Re : 1er script pour déplacement de fichiers

oui, c'est cela, "améliorer". lol
wink


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#22 Le 02/09/2023, à 13:32

geole

Re : 1er script pour déplacement de fichiers

Bonjour
Voici un script un peu  commenté assurant le déplacement des fichiers d'un répertoire dans un répertoire existant en  transformant les noms de fichiers en MAJUSCULES.

TYP=(avi mkv mp4 AVI) ##  Types d'extension à traiter.
EME=$HOME/"TE ST"     ##  Répertoire  d'origine des fichiers.
REC=$HOME/"ST TE"     ##  Répertoire de destination des fichiers.
for T in "${TYP[@]}";do # echo Traitement du type $T
# Recherche des  fichiers  du type indiqué dans le répertoire entrée.
find "$EME" -type f -name "*.$T">/tmp/resultat
while read f ; do   # echo Traitement du fichier $f
# Récupération du nom du fichier.
fic=$(basename "$f")
# Passage en MAJUSCULES du nom de fichier.   Attention cette commande remplace tous les espaces consécutifs par un seul espace.
#FIC=$(echo $fic | tr [:lower:] [:upper:]) ## Ne traite pas les minuscules accentuées.
FIC=$(echo ${fic^^})
# Récupération du nom du répertoire.
dir=$(dirname "$f")
# Changeons la destination.
DIR=${dir/$EME/$REC}
# Créons le sous-répertoire si nécessaire.
if [ ! -d "$DIR" ]; then mkdir -vp "$DIR"; fi
# Déplaçons le fichier.
mv -v "$f" "$DIR"/"$FIC"
done </tmp/resultat
done

Remarques:  Je n'ai très bien compris s' il fallait aussi transformer en MAJUSCULES les noms des sous-répertoires  (Ceux qui sont sous la structure $EME).


Les grilles de l'installateur https://doc.ubuntu-fr.org/tutoriel/inst … _subiquity
"gedit admin:///etc/fstab" est proscrit,  utilisez "pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY xdg-open /etc/fstab" Voir  https://doc.ubuntu-fr.org/gedit
Les partitions EXT4 des disques externes => https://forum.ubuntu-fr.org/viewtopic.p … #p22697248

En ligne

#23 Le 02/09/2023, à 13:53

Watael

Re : 1er script pour déplacement de fichiers

indenté, c'est mieux.

#!/bin/bash

src=/chemin/source
dst=/chemin/destination
extensions=( avi mkv mp4 AVI )
#
regExt=$(IFS='|'; echo "${extensions[*]}")

find "$src" -regextype posix-extended -regex ".*\.($regExt)" -print0 \
    | while IFS='' read -d '' file
      do
          dir=${file%/*}
          fname=${file##*/}
          fMaj=${fname^^}
          #...etc
      done

Dernière modification par Watael (Le 02/09/2023, à 18:52)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#24 Le 02/09/2023, à 16:32

geole

Re : 1er script pour déplacement de fichiers

Je viens  de prendre connaissance de la bonne façon de normer.
La commande find   est tellement complexe,  qu'il n est pas facile de la maitriser sauf pour ceux qui ont l'habitude.

Désolé je n'apprends par des exemples que je trouve dans internet et dont je comprends les commandes car Il y a des commentaires!
Du coup, j'hésite à poster    la  modification pour  traiter les sous-répertoires en majuscules... Surtout  qu'il y a certainement mieux que de passer par un fichier de manoeuvre car elle ne prend pas en compte les améliorations.

TYP=(avi mkv mp4 AVI)   ## Liste des extension à traiter.
EME=$HOME/"TE ST"       ## Répertoire émission.
REC=$HOME/"ST TE"       ## Répertoire réception.
dirMA1=$(echo ${EME^^}); dirMA2=$(echo ${dirMA1//\//\\\/}); echo $dirMA2 ## Passage en Majuscules et mise d'antislash.
dirmi2=$(echo ${REC//\//\\\/}); echo $dirmi2                             ## Mise d'antislah.
# Récupérer la liste des fichiers.
for T in "${TYP[@]}";do # echo Traitement du type $T
# Recherche des  fichiers  du type indiqué dans le répertoire entrée.
find "$EME" -type f -name "*.$T">/tmp/resultat
while read f ; do   # echo Traitement du fichier $f
# Récupération du nom du fichier.
fic=$(basename "$f")
#passage en MAJUSCULES.   Attention cette commande remplace tous les espaces consécutifs par un seul espace.
#FIC=$(echo $fic | tr [:lower:] [:upper:]) ## Ne traite pas les minuscules accentuées.
FIC=$(echo ${fic^^})
#Récupération du nom du répertoire.
dir=$(dirname "$f")
# Transformons  Le répertoire en majuscules.
echo ${dir^^} >/tmp/dir
# Sauf le début.
sed -i "s/$dirMA2/$dirmi2/" /tmp/dir
# Récupérons le nom. 
DIR=$(cat /tmp/dir)
# Créons le répertoire si nécessaire.
if [ ! -d "$DIR" ]; then mkdir -vp "$DIR"; fi
# Déplaçons le fichier.
mv -v "$f" "$DIR"/"$FIC"
done </tmp/resultat
done

Les grilles de l'installateur https://doc.ubuntu-fr.org/tutoriel/inst … _subiquity
"gedit admin:///etc/fstab" est proscrit,  utilisez "pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY xdg-open /etc/fstab" Voir  https://doc.ubuntu-fr.org/gedit
Les partitions EXT4 des disques externes => https://forum.ubuntu-fr.org/viewtopic.p … #p22697248

En ligne

#25 Le 02/09/2023, à 17:04

geole

Re : 1er script pour déplacement de fichiers

Pas évident de trouver l'anomalie qui  s'est  glissée et empêche le fonctionnement.

a@portable:~$ 
a@portable:~$ #!/bin/bash

src=/home/a/MV-in
dst=/media/Commun/MV-out
extensions=(avi mkv mp4 AVI)
#
regExt=$(IFS='|'; echo "${extensions[*]}")

find "$src" -regextype posix-extended -regex ".*\.($regExt)" -print0' \
    | while IFS='' read -d '' file
      do
          dir=${file%/*}
          fname=${file##*/}
          fMaj=${fname^^}
          #...etc
      done
> 
> 
> 
> 
> 
> 
> 
> 
> 
> ^C
a@portable:~$ TYP=(avi mkv mp4 AVI)   ## Liste des extension à traiter.
EME=$HOME/MV-in      ## Répertoire émission.
REC=/media/Commun/MV-out      ## Répertoire réception.
dirMA1=$(echo ${EME^^}); dirMA2=$(echo ${dirMA1//\//\\\/}); echo $dirMA2 ## Passage en Majuscules et mise d'antislash. 
dirmi2=$(echo ${REC//\//\\\/}); echo $dirmi2                             ## Mise d'antislah.
# Récupérer la liste des fichiers.
for T in "${TYP[@]}";do # echo Traitement du type $T
# Recherche des  fichiers  du type indiqué dans le répertoire entrée.
find "$EME" -type f -name "*.$T">/tmp/resultat
while read f ; do   # echo Traitement du fichier $f
# Récupération du nom du fichier.
fic=$(basename "$f")
#passage en MAJUSCULES.   Attention cette commande remplace tous les espaces consécutifs par un seul espace.
#FIC=$(echo $fic | tr [:lower:] [:upper:]) ## Ne traite pas les minuscules accentuées.
FIC=$(echo ${fic^^})
#Récupération du nom du répertoire.
dir=$(dirname "$f")
# Transformons  Le répertoire en majuscules.
echo ${dir^^} >/tmp/dir
# Sauf le début.
sed -i "s/$dirMA2/$dirmi2/" /tmp/dir
# Récupérons le nom. 
DIR=$(cat /tmp/dir)
done </tmp/resultat$FIC" mkdir -vp "$DIR"; fi
\/HOME\/A\/MV-IN
\/media\/Commun\/MV-out
copié '/home/a/MV-in/fic.avi' -> '/media/Commun/MV-out/FIC.AVI'
'/home/a/MV-in/fic.avi' supprimé
mkdir: création du répertoire '/media/Commun/MV-out/SOUS'
copié '/home/a/MV-in/sous/fic.mkv' -> '/media/Commun/MV-out/SOUS/FIC.MKV'
'/home/a/MV-in/sous/fic.mkv' supprimé
mkdir: création du répertoire '/media/Commun/MV-out/SOUSDIR'
copié '/home/a/MV-in/sousdir/fic.mp4' -> '/media/Commun/MV-out/SOUSDIR/FIC.MP4'
'/home/a/MV-in/sousdir/fic.mp4' supprimé
a@portable:~$ 

Dernière modification par geole (Le 02/09/2023, à 17:08)


Les grilles de l'installateur https://doc.ubuntu-fr.org/tutoriel/inst … _subiquity
"gedit admin:///etc/fstab" est proscrit,  utilisez "pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY xdg-open /etc/fstab" Voir  https://doc.ubuntu-fr.org/gedit
Les partitions EXT4 des disques externes => https://forum.ubuntu-fr.org/viewtopic.p … #p22697248

En ligne