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 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 ... wink

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 smile

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.

Hors 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.

Hors 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.

Hors ligne