Vous n'êtes pas identifié(e).
Et si j'enlève {*.jpg,*.png,*.gif,*.ico} et je refais la commande :
Alors je me retrouve avec la même quantité de sous-répertoire dans /0jpg ...
Que faire?
Dernière modification par clodben (11-03-2021 12:42:03)
Hors ligne
En supposant que toutes tes images sont dans le dossier /media/semaphar/4bMyPs/HOStPAPA21/origine.xyz et que ton dossier destination est /media/semaphar/4bMyPs/0jpg
Au plaisir.
EDIT: Attention, si des fichiers images portent le même nom dans des dossiers différents !
Dernière modification par Tawal (11-03-2021 15:30:47)
Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne
Voilà d'où m'est venu la question:
J'ai un site internet écrit avec l'aide de Wordpress et je désire récupérer tous mes fichiers images ou icônes et les placer dans un même répertoire, sous mon disque dur.
(REM >> je suis un débutant au niveau de la ligne de commande)
Comme Wordpress génère énormément de répertoires (les fichiers images sont placés dans différents répertoires et majoritairement dans des dossiers correspondant au mois où ils ont été installés...), après plus de 6 ans ... il y en a énormément.
J'ai dans mon disque dur une copie conforme et complète de mon site.
Alors j'ai pensé à la commande suivante, mais elle ne fonctionne pas comme il faut ...root@mx:/media/semaphar/4bMyPs# cp -R /media/semaphar/4bMyPs/HOStPAPA21/origine.xyz {*.jpg,*.png,*.gif,*.ico} /media/semaphar/4bMyPs/0jpg
cp: impossible d'évaluer '.jpg': Aucun fichier ou dossier de ce type
cp: impossible d'évaluer '.png': Aucun fichier ou dossier de ce type
cp: impossible d'évaluer '.gif': Aucun fichier ou dossier de ce type
cp: impossible d'évaluer '.ico': Aucun fichier ou dossier de ce type
Et si j'enlève {*.jpg,*.png,*.gif,*.ico} et je refais la commande :cp -R /media/semaphar/4bMyPs/HOStPAPA21/origine.xyz/*.jpg /media/semaphar/4bMyPs/0jpg
Alors je me retrouve avec la même quantité de sous-répertoire dans /0jpg ...
Que faire?
Salut,
Il y a un bug sur ta commande :
Il y a un espace et non un / avant le {.
Salut,
Il y a un bug sur ta commande :cp -R /media/semaphar/4bMyPs/HOStPAPA21/origine.xyz {*.jpg,*.png,*.gif,*.ico} /media/semaphar/4bMyPs/0jpg
Il y a un espace et non un / avant le {.
Oui, mais en la corrigeant, il obtiendra le même résultat que sa dernière commande : toute l'arborescence sera dupliquée.
Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne
Hors ligne
Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne
Si tu veux en faire un script, il vaut mieux ne pas utiliser find.
Et utiliser des boucles avec des globs.
Tiens, j’aurais conseillé exactement le contraire
De mon expérience, find est beaucoup plus robuste pour l’utilisation dans des scripts que les globs.
Hors ligne
Hors ligne
De mon expérience, find est beaucoup plus robuste pour l’utilisation dans des scripts que les globs.
Bah non !
Un find .... -print0 est aussi solide qu'un for i in ./*
En suite on peut jouer sur les options shell avec shopt (c'est même plutôt recommandé).
Il faut donc un shopt -s nullglob globstar dotglob
nullglob : éviter les chaînes vides
globstar : Pour matcher les dossiers et sous dossiers avec le glob **/*
dotglob : pour que les globs prennent aussi les fichiers et dossiers cachés (commençant par un ".")
find est surtout utile pour des recherches spécifiques ou sur plusieurs dossiers séparés.
Au plaisir
Dernière modification par Tawal (13-03-2021 16:23:25)
Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne
Un find .... -print0 est aussi solide qu'un for i in ./*
Un exemple tout con où les globs se viandent : lance tes deux commandes dans un répertoire vide
En suite on peut jouer sur les options shell avec shopt (c'est même plutôt recommandé).
Il faut donc un shopt -s nullglob globstar dotglob
nullglob : éviter les chaînes vides
globstar : Pour matcher les dossiers et sous dossiers avec le glob **/*
dotglob : pour que les globs prennent aussi les fichiers et dossiers cachés (commençant par un ".")
Je développe en shell depuis pas mal d’années, mais uniquement des scripts portables (POSIX ou presque). Je ne connais aucune de ces options, qui sont probablement spécifiques de Bash.
Hors ligne
Un exemple tout con où les globs se viandent : lance tes deux commandes dans un répertoire vide
Justement le : shopt -s nullglob évite les entrées vides.
Le fait de "protéger" le glob par "./" permet de prendre en compte les noms de fichiers commençant par un - (évite surtout d'être pris pour une option)
Je suis un piètre scripteur (pire qu'un kiddie) avec pas mal de mauvaises habitudes. J'essaie de rattraper ça
ici besoin que de nullglob (chaine vide) et de globstar (interprétation de **)
Au plaisir.
Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne
Oui, c'est spécifique à Bash (je crois même à partir de la version 3)
Alors oui, c’est bien spécifique à Bash.
Mais c'est apparu à partir de la version 4 de Bash.
Donc, ce n'est pas si vieux que ça
Au plaisir.
Comme la science n'est pas infuse, elle se diffuse.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !
Hors ligne