#1 Le 08/07/2019, à 13:18
- soupaloignon
[Résolu] Copier les fichiers sélectionnés vers un répertoire
Bonjour le forum,
Je coince sur un truc tout con, que j'en ai presque honte de ne pas y arriver ...
J'ai parfois besoin de travailler sur quelques scans en png, pour le transformer en jpg et eventuellement en réduire la taille, à cause des limitations parfois mises en place par des sites pour récupérer des pièces jointes.
Actuellement je crée un dossier dans le répertoir où se trouvent mes png, je fais un copier coller des fichiers qui m'intéressent et ensuite je lance dans le répertoire une ligne de bash pour convertir png vers jpg du genre :
for file in *.png; do convert -quality 80 "$file" "$(basename $file .png).jpg"; done
Je voudrais faire un script un peu plus évolué qui fasse tout d'un coup :
Sélection d'un ou plusieurs fichiers, puis lancement du script(clic droit "caja scripts)", qui va :
Créer un répertoire
copier dans ce répertoire le ou les fichiers sélectionnés
se positionner dans le répertoire pour faire la conversion png/jpg
effacer les png
appliquer si besoin un changement de taille aux jpg
Tout ça je sais faire (même si c'est pas toujours orthodoxe) mais là où je coince c'est comment envoyer les fichiers sélectionnés dans le répertoire créé.
Si vous avez des infos, des pistes, des idées ... je suis preneur
Merci d'avance
Dernière modification par soupaloignon (Le 08/07/2019, à 14:41)
==> Libérez les huitres du bassin d'Arcachon <==
Hors ligne
#2 Le 08/07/2019, à 13:28
- Watael
Re : [Résolu] Copier les fichiers sélectionnés vers un répertoire
salut,
envoyer les fichiers sélectionnés dans le répertoire créé.
copier dans [l]e répertoire le ou les fichiers sélectionnés
ça je sais faire
alors, c'est quoi le problème ?
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#3 Le 08/07/2019, à 13:28
- soupaloignon
Re : [Résolu] Copier les fichiers sélectionnés vers un répertoire
Je me répond à moi me, je viens de trouver ça, qui fonctionne :
for var in "$@" ; do cp "$@" 01 ; done
Cela pourrait être amélioré ?
==> Libérez les huitres du bassin d'Arcachon <==
Hors ligne
#4 Le 08/07/2019, à 13:30
- soupaloignon
Re : [Résolu] Copier les fichiers sélectionnés vers un répertoire
Salut Watael,
Mon message était mal structuré, la phrase ci-dessous n'était au bon endroit :
Tout ça je sais faire (même si c'est pas toujours orthodoxe) mais là où je coince c'est comment envoyer les fichiers sélectionnés dans le répertoire créé.
Dernière modification par soupaloignon (Le 08/07/2019, à 13:31)
==> Libérez les huitres du bassin d'Arcachon <==
Hors ligne
#5 Le 08/07/2019, à 13:42
- Watael
Re : [Résolu] Copier les fichiers sélectionnés vers un répertoire
la boucle est inutile ! et puis ça devrait être cp "$var" 01
cp -t "$destination" "$@"
c'est tout.
Connected \o/
Welcome to sHell. · eval is evil.
En ligne
#6 Le 08/07/2019, à 14:28
- soupaloignon
Re : [Résolu] Copier les fichiers sélectionnés vers un répertoire
Merci Warael pour ta réponse, je viens de l'intégrer
Je laisse le script ici, si ça peut servir à quelqu'un
edit : et n'hésitez pas a faire des retours si vous voyez des trucs pouvant être améliorés.
#!/bin/bash
####################################################################################
# Pour convertir des documents scannés en bonne qualité PNG en jpg "tout terrain",
# tout en conservant les png d'origine.
# Merci au forum : https://forum.ubuntu-fr.org/viewtopic.php?id=2041755
# Soupaloignon 2019
####################################################################################
###### Function(s) #################################################################
function Casse-Extension
{
# Transforme la casse en png
ls -d *.PNG | sed 's/\(.*\).PNG$/mv "&" "\1.png"/' | sh
}
####################################################################################
# Eviter les problèmes avec des noms de fichiers comportants des espaces
IFS=$'\n'
# Nom du répertoire créé
destination="PNG-VA-TEN"
####################################################################################
# Créer le dossier
mkdir $destination
# copier les fichiers sélectionnés
cp -t "$destination" "$@"
# Rentrer dans le dossier créé
cd $destination
# Function Transforme la casse et ou l'extension en png
Casse-Extension
# Changement de format
for file in *.png; do convert -quality 80 "$file" "$(basename $file .png).jpg"; done
# Détruire les png
rm *.png
# Sortir du répertoire puis envoyer le répertoire sur le bureau en ajoutant la date au nom
cd ..
mv $destination $HOME/Bureau/$destination-$(date +%Y-%m-%d--%H-%M-%S)
Dernière modification par soupaloignon (Le 08/07/2019, à 14:38)
==> Libérez les huitres du bassin d'Arcachon <==
Hors ligne
#7 Le 08/07/2019, à 18:01
- Watael
Re : [Résolu] Copier les fichiers sélectionnés vers un répertoire
ah la la !!! ne surtout pas utiliser ls !
alors, la modification de casse devient inutile.
#!/bin/bash
shopt -s nocaseglob extglob
destination="PNG-va-t-en"
test -d "$destination" || mkdir "$destination"
cp -t "$destination" "$@"
#on ne change pas de répertoire dans un script, c'est tellement rarement nécessaire.
for f in "$destination"/*.png; do convert -quality 80 "$f" "${f%*.}.jpg"; done
rm "$destination"/@(png|PNG)
mv "$destination" "$HOME/Bureau/$destination-$(date +%Y-%m-%d--%H-%M-%S)"
pas testé : à vérifier.
NB : ne pas oublier de mettre les Développements de variables entre guillemets.
Connected \o/
Welcome to sHell. · eval is evil.
En ligne