#1 Le 17/07/2007, à 10:51
- chaoswizard
[Résolu]Script pour découper des fichiers
Salut à tous,
Je viens de faire mon 1er script pour essayer un peu de me simplifier la vie (et m'occuper ).
J'ai réaliser ce script qui permet de découper un fichier en morceaux de taille choisis avec 7zip (et donc, ceux utilisant windows pourront aussi décompresser facilement ce fichier).
#!/bin/sh
#
# On teste si un fichier a été sélectionné
if [ $# -eq 0 ]; then
zenity --error --title="Erreur" --text="Sélectionnez un fichier"
exit 1
fi
# On choisit la taille des morceaux
taille=$(zenity --title "Taille" --entry --text "Choisir la taille des morceaux (en Mo)")
# On s'assure que les noms de fichiers contenant des espaces fonctionnent
IFS=$'\n'
# On compresse et on découpe en morceaux de "taille" Mo avec 7zip
for I in `echo $*`
do
7z a -v"$taille"m $I.7z $I | zenity --progress --auto-close --text "Compression en cours..." --pulsate
pkill 7z
done
exit0
# Fini !
zenity --info --title="Fini" --text="Fini !"
J'ai cependant un petit soucis, les fichier avec un nom contenant des espaces ne fonctionnent pas !
J'ai bien essayé de trouver comment faire mais rien (sur le forum, rien trouver, sur le wiki, les exemples de scripts ne fonctionnent pas avec des espaces et sur Google, j'ai des centaines de réponses, mais rien de potable...).
Si quelqu'un sait comment faire !
Ho, et si quelqu'un a une idée pour améliorer le script existant, je prends aussi !
Merci !
Dernière modification par chaoswizard (Le 17/07/2007, à 13:21)
Ubuntu ==> Debian ==> Archlinux
Hors ligne
#2 Le 17/07/2007, à 12:30
- trucutu
Re : [Résolu]Script pour découper des fichiers
Si je me trompe pas, le fichier est pris en argument de ton script.
Hors si tu mets des espaces, il va considérer cela comme plusieurs arguments...
Je pense que ca pourrait marcher si tu entre "nom de fichier.ext" ainsi :
script nom\ de\ fichier.ext
Sinon, ya pas un FileChooser dans zenity ? (qui te permettrait de récupèrer le fichier graphiquement => plus user-friendly )
La chanson du dimanche - "La pêche !"
PC acheté chez Novatux : entièrement satisfait.
Faire des recherches solidaires !
Hors ligne
#3 Le 17/07/2007, à 12:35
- chaoswizard
Re : [Résolu]Script pour découper des fichiers
Si je me trompe pas, le fichier est pris en argument de ton script.
Hors si tu mets des espaces, il va considérer cela comme plusieurs arguments...Je pense que ca pourrait marcher si tu entre "nom de fichier.ext" ainsi :
script nom\ de\ fichier.ext
Sinon, ya pas un FileChooser dans zenity ? (qui te permettrait de récupèrer le fichier graphiquement => plus user-friendly
)
Ben le but, c'est de faire un clique droit sur le fichier à compresser et découper, on tape la taille et voilà !
Mais justement, je n'arrive pas à faire qu'il prenne en compte les noms de fichier avec espaces.
Sinon, ce que tu proposes marche, mais seulement si j'entre le nom du fichier à la main (?), donc, c'est pas vraiment ce que je veux...
Dernière modification par chaoswizard (Le 17/07/2007, à 12:36)
Ubuntu ==> Debian ==> Archlinux
Hors ligne
#4 Le 17/07/2007, à 12:54
- trucutu
Re : [Résolu]Script pour découper des fichiers
Ben si t'arrives déjà à exécuter ton script avec clic droit qui récupère directement la cible cliquée comme arguments, et bien je dirais qu'il faut faire dans ton script une boucle sur la listes des arguments et concatener le tout en une seule chaîne de caractère.
La chanson du dimanche - "La pêche !"
PC acheté chez Novatux : entièrement satisfait.
Faire des recherches solidaires !
Hors ligne
#5 Le 17/07/2007, à 13:05
- chaoswizard
Re : [Résolu]Script pour découper des fichiers
Ben si t'arrives déjà à exécuter ton script avec clic droit qui récupère directement la cible cliquée comme arguments, et bien je dirais qu'il faut faire dans ton script une boucle sur la listes des arguments et concatener le tout en une seule chaîne de caractère.
Effectivement, ça serait bien !!!
On fait comment ?
Ubuntu ==> Debian ==> Archlinux
Hors ligne
#6 Le 17/07/2007, à 13:07
- cushy007
Re : [Résolu]Script pour découper des fichiers
Essaye: for I in $@ au lieu de for I in `echo $*`
le $@ permet d'interpréter les paramètres comme une liste alors que $* les interprète comme une suite de mots (il me semble)
voir cet excellent site : http://abs.traduc.org/abs-4.2.01-fr/index.html
Hors ligne
#7 Le 17/07/2007, à 13:10
- Alain.g
Re : [Résolu]Script pour découper des fichiers
salut
Le plus simple est de changer la valeur de la variable IFS (séparateur de champ) avant la boucle for :
IFS=$'\n'
Xubuntu Karmic !
Hors ligne
#8 Le 17/07/2007, à 13:18
- chaoswizard
Re : [Résolu]Script pour découper des fichiers
Essaye: for I in $@ au lieu de for I in `echo $*`
le $@ permet d'interpréter les paramètres comme une liste alors que $* les interprète comme une suite de mots (il me semble)
Ca ne marche pas :
Pour un fichier a b, celà fait a.7z et b.7z et les 2 sont vides...
voir cet excellent site : http://abs.traduc.org/abs-4.2.01-fr/index.html
Énorme merci pour la doc., j'en cherchais une !!!
salut
Le plus simple est de changer la valeur de la variable IFS (séparateur de champ) avant la boucle for :
IFS=$'\n'
Ha, merci, ça marche très bien !!!
Je modifie le script d'origine pour ceux que ça intéresse !
Encore merci à tous
Ubuntu ==> Debian ==> Archlinux
Hors ligne
#9 Le 17/07/2007, à 14:02
- qqun
Re : [Résolu]Script pour découper des fichiers
Le plus simple est de changer la valeur de la variable IFS (séparateur de champ) avant la boucle for :
Code:
IFS=$'\n'
oui ou alors juste rajouter des "" a la variable.
#!/bin/sh
#
# On teste si un fichier a été sélectionné
if [ $# -eq 0 ]; then
zenity --error --title="Erreur" --text="Sélectionnez un fichier"
exit 1
fi
# On choisit la taille des morceaux
taille=$(zenity --title "Taille" --entry --text "Choisir la taille des morceaux (en Mo)")
# On compresse et on découpe en morceaux de "taille" Mo avec 7zip
for I
do
7zr a -v"$taille"m ./"$I".7z ./"$I" | zenity --progress --auto-close --text "Compression en cours..." --pulsate
pkill 7z
done
exit0
# Fini !
zenity --info --title="Fini" --text="Fini !"
#10 Le 12/04/2008, à 14:13
- manIP*
Re : [Résolu]Script pour découper des fichiers
Bonjour,
je suis intéressé par ce script, mais étant débutant je ne sais pas trop ou le placer ??
si quelqu'un est très gentil ...
#11 Le 19/04/2008, à 13:37
- chaoswizard
Re : [Résolu]Script pour découper des fichiers
Tu mets ça dans :
/home/nom_utilisateur/.gnome2/nautilus-scripts
Ubuntu ==> Debian ==> Archlinux
Hors ligne