Contenu | Rechercher | Menus

Annonce

Les adresses laposte.net ne permettent pas de recevoir nos emails. Vous êtes invité à changer d'adresse dans vos paramètres de compte à votre prochaine connexion.

Ubuntu 16.04 LTS
Commandez vos DVD et clés USB Ubuntu-fr !

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.

#1901 Le 18/02/2016, à 18:41

kholo

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

Bonjour, je relance les scripteurs fous avec quelques trucs :
NB : d'abord la notation `une_fonction` est en train de disparaître au profit de "$(une_fonction)"

ensuite, voici un bout de script pour utiliser la gestion des ini (ou conf)
c'est à dire enregistrer et lire un fichier ini
suite de cette vieille discussion

#!/bin/bash
nomLogiciel="$(basename "$0")"
FONCTION="lecture et écriture de fichier ini ou conf"
VERSION="alpha"

echo "lancement $nomLogiciel..."

function _quitter {
	# mettre ici tout ce qui sera nécessaire à la bonne fermeture
echo "--------------------------------
AVANT sauverIni le fichier ini contient :"
cat $fichierIni

	# echo "$(sauverIni)" > "$nomLogiciel.ini"  ;
	sauverIni ;

echo "--------------------------------
APRES sauverIni le fichier ini contient :"
cat $fichierIni

	exit 0
}

function parserLigneIni {
	i=$@ ;
	case $i in
		# xxxxx=*)				xxxxxx="${i#*=}" ;;		
		nomLogiciel=*)			nomLogiciel="${i#*=}" ;;
		FONCTION=*)				FONCTION="${i#*=}" ;;
		VERSION=*)				VERSION="${i#*=}" ;;
		une_valeur=*)			une_valeur="${i#*=}" ;;
		une_autre_valeur=*)		une_autre_valeur="${i#*=}" ;;
		une_troisieme=*)		une_troisieme="${i#*=}" ;;
	esac
}

function chargerIni {
# [ -f "$fichierIni" ] || \#
	while read line ;
	do
		parserLigneIni "$line" ;
	done < "$fichierIni" ;
}

function sauverIni {
echo "nomLogiciel=$nomLogiciel
FONCTION=$FONCTION
VERSION=$VERSION
une_valeur=$une_valeur
une_autre_valeur=$une_autre_valeur
une_troisieme=$une_troisieme
"  > "$nomLogiciel.ini" ;
}

function _initialisation {
	une_valeur="On peut changer le fichier ini puis"
	une_autre_valeur="le relancer pour voir les changements"
	une_troisieme="des espaces et des lettres accentuées àÂâêïù"

echo "Les valeurs AVANT chargerIni sont :
nomLogiciel=$nomLogiciel
FONCTION=$FONCTION
VERSION=$VERSION
une_valeur=$une_valeur
une_autre_valeur=$une_autre_valeur
une_troisieme=$une_troisieme
" 

	fichierIni="$nomLogiciel.ini"
	echo "le nom du fichier ini est : $fichierIni"
	chargerIni ;

echo "Les valeurs APRES chargerIni sont :
nomLogiciel=$nomLogiciel
FONCTION=$FONCTION
VERSION=$VERSION
une_valeur=$une_valeur
une_autre_valeur=$une_autre_valeur
une_troisieme=$une_troisieme
" 
}

function _main {
	_quitter
}

_initialisation
_main

echo "Ne doit pas s'afficher !"
exit 0

celui là c'est pour ranger tous les fichiers d'un dossier et ses sous dossiers
par type mime
il doit pouvoir s'améliorer en gérant plutôt les extensions

#!/bin/bash
nomLogiciel="$(basename "$0")" ;
# script pour réorganiser une arborescence rapidement
FONCTION="organiser les fichiers 
en les rangeant dans des dossiers au nom des types mimes" ;
VERSION="0.7" ;
# NOTES DE VERSIONS
# ----------------------------------------------
# 
# ----------------------------------------------
#
# Copyright (C) 22 Jan. 2011, Rombeaut Rodolphe
# http://scriptam.over-blog.com/
# Released into the public domain.
# 
# modifié par kholo-informatique 2016
# www.kholo-informatique.fr
#********************************************************************

function creer_journal {
	fichier_log="$nomLogiciel.log"
journal "$(date)
Ouverture de $nomLogiciel"
}

function journal {
	./journal "$fichier_log" "$@"
}
creer_journal

# journal "Chargement..." "voir_journal"
function voir_journal {
journal "-----------------
FONCTION voir_journal $@
-----------------"
	zenity --text-info \
			--width=600 --height=450 \
			--title="Fichier Journal" \
			--filename=$"$fichier_log" \
			--checkbox="vider le journal en quittant."

	case $? in
		0) rm -f "$fichier_log";
			creer_journal
			journal "RàZ Remise à zéro du journal !"
		;;
		1) journal "Sortie - voir_journal !" ;;
		-1) journal "voir_journal - An unexpected error has occurred." ;;
	esac
}

#********************************************************************
journal "lancement $nomLogiciel..." ;
#********************************************************************

# journal "Chargement..." ""_initialisation
function _initialisation {
journal "-----------------
FONCTION _initialisation
-----------------" ;
# Couleurs du texte affiché dans le shell
	FUSHIA="\033[1;35m" ;
	NOIR="\033[1;0m" ;
	BLEU="\033[1;34m" ;
	VERT="\033[1;32m" ;
	ROUGE="\033[1;31m" ;

	# dirOrigine="/répertoire à trier"
	dirOrigine="$HOME" ;
	# dirDestination="/répertoire de destination"
	dirDestination="$HOME" ;

	nbreDeFichiers=0 ;

	fichierIni="$nomLogiciel.ini"
	chargerIni ;
}

# journal "Chargement..." "chargerIni"
function chargerIni {
journal "-----------------
FONCTION chargement ini
-----------------" ;
	# local x ;
	while read line ;
	do
		journal "$line" ;
		parserLigneIni "$line" ;
		
	done < "$fichierIni" ;
	journal "chargement terminé" ;
}

# journal "Chargement..." "_quitter"
function _quitter {
journal "-----------------
FONCTION _quitter
-----------------" ;
	# mettre ici tout ce qui sera nescessaire à la bonne fermeture

	sauverIni	 ;
	exit 0
}

#********************************************************************

# journal "Chargement..." "parserLigneIni"
function parserLigneIni {
journal "-----------------
FONCTION parserLigneIni
-----------------" ;
	i=$@ ;
	journal "parseur $i" ;
	case $i in
		# xxxxx=*)					xxxxxx="${i#*=}" ;;
		dirOrigine=*)					dirOrigine="${i#*=}" ;;
		dirDestination=*)				dirDestination="${i#*=}" ;;
	esac
}

# journal "Chargement..." "sauverIni"
function sauverIni {
journal "-----------------
FONCTION sauverIni
-----------------" ;
echo "dirOrigine=$dirOrigine
dirDestination=$dirDestination
" > "$nomLogiciel.ini" ;
}

#********************************************************************

# journal "Chargement..." "range"
function range {
	heuredebut=$(date +%s.%N) ;

	# local ORIG=${ORIG%/} ;
	# local DEST=${DEST%/} ;
	local ORIG=${dirOrigine%/} ;
	local DEST=${dirDestination%/} ;

	find $ORIG/ -regextype "posix-extended" -depth -type f -regex ".*"  | while read fichier ; do
		((nbreDeFichiers++)) ;
		a=$(file -ib "${fichier}") ;

journal "------------------------------------------------
en cours : $a" ;

		[ -d "$DEST/${a%%/*}" ] || mkdir -p "$DEST/${a%%/*}" ;
		mvfichierext=${fichier##*/} ;
		mvfichier=${mvfichierext%%.*} ;
		ext=${mvfichierext#*.} ;

journal "N° $nbreDeFichiers
fichier		: $fichier
mvfichierext	: $mvfichierext
mvfichier	: $mvfichier
ext		: $ext " ;

		# sleep 2 ; #-pour prendre le temps de regarder !

		[ "${fichier%/*}" != "$DEST/${a%%/*}" ] && {
		[ -f "$DEST/${a%%/*}/${mvfichierext}" ] && {
			b=1 ;
			while [ -f "$DEST/${a%%/*}/${mvfichier}_copie${b}.${ext}" ] ; do ((b++)) ; done
			mv "${fichier}" "$DEST/${a%%/*}/${mvfichier}_copie${b}.${ext}" ;
		} || mv "${fichier}" "$DEST/${a%%/*}/${mvfichierext}" ;
		}

	journal "destination	: $DEST/${a%%/*}" ;
	duree="$(echo "$(date +%s.%N) - $heuredebut" | bc)" ;
	journal "Traitement de $nbreDeFichiers fichiers en $duree secondes" ;

	done
	# supprimer les dossiers quand le travail est terminé
	# find $ORIG/ -type d -exec rmdir 2>/dev/null {} \;

	duree="$(echo "$(date +%s.%N) - $heuredebut" | bc)" ;
	journal "Traitement de $nbreDeFichiers fichiers en $duree secondes" ;
}

#********************************************************************

# journal "Chargement..." "frm_principale"
function frm_principale {
journal "-----------------
FONCTION frm_principale
-----------------" ;
LAQUESTION="
---------------------------------------------------------------------
<b>Organisation de fichiers</b>
$FONCTION
Ce module <b>recherche des fichiers</b> selon un <b>modèle</b>
puis les <b>déplace</b>
depuis un <b>dossier origine</b> vers un <b>dossier destination</b>
" ;

	local KA="Dossier Origine" ;
	local KB="Dossier Destination" ;
	local KC="Organiser " ;
	local KD="" ;
	local KE="" ;
	local KF="" ;
	local KG="" ;
	local KH="" ;
	local KI="journal" ;

	local VA="$dirOrigine" ;
	local VB="$dirDestination" ;
	local VC="fichiers par type mime" ;
	local VD="" ;
	local VE="Valeur 9" ;
	local VF="Valeur 6" ;
	local VG="Valeur 7" ;
	local VH="Valeur 8" ;
	local VI="voir et RàZ" ;

	zenity --list --width=600 --height=350 --text="$LAQUESTION" \
	--ok-label="Sélectionner" \
	--cancel-label="quitter" \
	--hide-column 1 --column "" --column "choix" --column "valeur" \
	1 "$KA" "$VA" \
	2 "$KB" "$VB" \
	0 "" "" \
	3 "$KC" "$VC" \
	0 "" "" \
	9 "$KI" "$VI" ;

	# 4 "$KD" "$VD" \
	# 5 "$KE" "$VE" \
	# 6 "$KF" "$VF" \
	# 7 "$KG" "$VG" \
	# 8 "$KH" "$VH" \ #
}

# journal "Chargement..." "frm_principale_parser"
function frm_principale_parser {
journal "-----------------
FONCTION frm_principale_parser
-----------------" ;
	case $1 in
		1) setDirOrigine ;;
		2) setDirDestination ;;
		3) range ;;
		# 4) echo "rien encore" ;;
		# 5) echo "rien encore" ;;
		# 6) echo "rien encore" ;;
		# 7) echo "rien encore" ;;
		# 8) echo "rien encore" ;;
		9) voir_journal ;;
		0) 
			echo ""
			;;
		*) 
			quitter="1"
			_quitter ;;
	esac
}

#********************************************************************

# journal "Chargement..." "_main"
function _main {
journal "-----------------
FONCTION _main
-----------------" ;
	menuchoice=$(frm_principale);
	frm_principale_parser ${menuchoice%|*} # pour corriger le 1|1

	if [ $quitter!="1" ] ; then
		# on boucle tant que quitter est différent de 1
		# pas de else car pas nescessaire ;°)
		_main ;
	fi
}

#********************************************************************

# journal "Chargement..." "setDirOrigine"
function setDirOrigine {
journal "-----------------
FONCTION setDirOrigine
-----------------" ;
	local dirOrigineOld="$dirOrigine" ;
	dirOrigine="$(zenity --file-selection --directory --filename="$dirOrigine/")" ;
	if [ $? = 0 ] ;
	then
		journal "Le dirOrigine est ${dirOrigine}" ;
	else
		dirOrigine="$dirOrigineOld" ;
	fi
}

# journal "Chargement..." "setDirDestination"
function setDirDestination {
journal "-----------------
FONCTION setDirDestination
-----------------" ;
	local dirDestinationOld="$dirDestination" ;
	dirDestination="$(zenity --file-selection --directory --filename="$dirDestination/")" ;
	if [ $? = 0 ] ;
	then
		journal "dirDestination : ${dirDestination}" ;
	else
		dirDestination="$dirDestinationOld" ;
	fi
}

# journal "Chargement..." "afficher_aide_ldc"
function afficher_aide_ldc {
echo "
-----------------------------------------------
exemples :
$nomLogiciel -[OPTIONS]
 
-----------------------------------------------
"
}

#********************************************************************

# journal "Chargement..." "parser_arguments_VARIABLES"
function parser_arguments_VARIABLES {
journal "-----------------
FONCTION parser_arguments_VARIABLES $@
-----------------"
# PARSER VARIABLES
local i
for i in $@ ;
do
case $i in
	-h|-H|--help) 	afficher_aide_ldc		;;
	# fiche=*)		fiche="${i#*=}" 		;;
	fichier_rch=*)	fichier_rch="${i#*=}"	;;
esac
done

}

# journal "Chargement..." "parser_arguments_ACTION"
function parser_arguments_ACTION {
journal "-----------------
FONCTION parser_arguments_ACTION $@
-----------------"
local i
for i in $@
do
case $i in
	-r|--range) 	range				;;
	# *) journal "$i - unknown option"	;;
esac
done
}

#********************************************************************

# journal "Chargement..." "EDITION_IN"
function EDITION_IN {
journal "-----------------
FONCTION EDITION_IN $@
-----------------"
	_initialisation
	_main
}

# journal "Chargement..." "EDITION_OUT"
function EDITION_OUT {
journal "-----------------
FONCTION EDITION_OUT
-----------------"
	parser_arguments_VARIABLES "$@"
	_initialisation
	parser_arguments_ACTION "$@"
}

# ********************************************************************

if [ "$#" -eq 0 ]; then
	journal "mode_edition=TRUE -> IN"
	mode_edition="TRUE"

	EDITION_IN
else
	journal "mode_edition=FALSE -> OUT"
	mode_edition="FALSE"
	EDITION_OUT "$@"
fi

# ********************************************************************

exit 0

Pour les GUI vite faits avec une liste de choix j'ai ce genre de chose avec zenity list
je remet un exemple que j'ai mis sur le forum pour lancer des jeux dans Mame

#!/bin/bash
# ----------------------------------------------
nomLogiciel="$(basename "$0")"
FONCTION="lancement de jeux avec Mame"
VERSION="alpha"
# NOTES DE VERSIONS
# 
# ----------------------------------------------
# à mettre au début d'un fichier bash
# pas encore géré
# PID=$$
# FIFO=/tmp/FIFO${PID}
# mkfifo ${FIFO}
# ----------------------------------------------
echo "lancement $nomLogiciel..."

declare -a GAME_NAME ;
declare -a GAME_PATH ;
declare -a GAME_ARGS ;

function _journal {
	fichier_log="$nomLogiciel.log"

	if [ -f "$fichier_log" ];
	then
		echo "..."
	else
		echo "Création du fichier de log : $fichier_log"
		touch "$fichier_log";
	fi
}
echo "ouverture du journal"
_journal

function journal {
	echo "$@" >> $fichier_log
}

# journal "Chargement..." "voir_journal"
function voir_journal {
journal "-----------------
FONCTION voir_journal $@
-----------------"
	zenity --text-info \
			--width=600 --height=450 \
			--title="Fichier Journal" \
			--filename=$"$fichier_log" \
			--checkbox="vider le journal en quittant."

	case $? in
		# 0) 2>/dev/NULL > "$fichier_log";
		0) rm -f "$fichier_log" ;
			_journal
			journal "RàZ Remise à zéro du journal !"
		;;
		1) journal "Sortie - voir_journal !" ;;
		-1) journal "voir_journal - An unexpected error has occurred." ;;
	esac
}

# journal "Chargement..." "_initialisation"
function _initialisation {
journal "*******************initialisation*******************"
quitter="0"
journal "VARIABLES"
MAME="/usr/games/mame"
LAQUESTION="<b>$nomLogiciel</b>
--------------------------------------------------
Ce module est une liste de choix de jeux Mame
--------------------------------------------------
le double clic sur un choix pour lancer un jeu
sélection avec les flèches puis entrée aussi
echap pour quitter
" ;
#-------------------------------------------------------------
GAME_NAME[0]="Nom" ;
GAME_PATH[0]="Chemin" ;
GAME_ARGS[0]="Arguments" ;
#-------------------------------------------------------------
# METTRE LA LISTE ET LES PARAMETRAGES DES JEUX ICI
# ATTENTION ZENITY EST TRES CHATOUILLEUX
# IL N'AIME PAS LES LES VARIBLES QUI COMMENCENT PAR UN TIRET "-"
# SOLUTION : METTRE UN ESPACE
#-------------------------------------------------------------
GAME_NAME[1]="makaimurg" ;
GAME_PATH[1]="/home/mame/roms/makaimurg" ;
# METTRE LES DIFFERENTES CONF A COMMENTER OU DECOMMENTER
# GAME_ARGS[1]=" -resolution 1900x1080 -waitvsync -cheat -autosave" ;	# CONFIG MAXI
GAME_ARGS[1]=" -resolution 1400x1050 -waitvsync -cheat -autosave" ; 	# CONFIG DEFAUT
# GAME_ARGS[1]=" -resolution 1024x768 -waitvsync -cheat -autosave" ;	# CONFIG MINI
#-------------------------------------------------------------
GAME_NAME[2]="Jeux 2" ;
GAME_PATH[2]="/chemin/vers/jeux2" ;
GAME_ARGS[2]="arguments de Jeux 2" ;
#-------------------------------------------------------------
GAME_NAME[3]="Jeux 3" ;
GAME_PATH[3]="/chemin/vers/jeux3" ;
GAME_ARGS[3]="arguments de Jeux 3" ;
#-------------------------------------------------------------
GAME_NAME[4]="Jeux 4" ;
GAME_PATH[4]="/chemin/vers/jeux4" ;
GAME_ARGS[4]="arguments de Jeux 4" ;
#-------------------------------------------------------------
GAME_NAME[5]="Jeux 5" ;
GAME_PATH[5]="/chemin/vers/jeux5" ;
GAME_ARGS[5]="arguments de Jeux 5" ;
#-------------------------------------------------------------
GAME_NAME[6]="Jeux 6" ;
GAME_PATH[6]="/chemin/vers/jeux6" ;
GAME_ARGS[6]="arguments de Jeux 6" ;
#-------------------------------------------------------------
GAME_NAME[7]="Jeux 7" ;
GAME_PATH[7]="/chemin/vers/jeux7" ;
GAME_ARGS[7]="arguments de Jeux 7" ;
#-------------------------------------------------------------
GAME_NAME[8]="Jeux 8" ;
GAME_PATH[8]="/chemin/vers/jeux8" ;
GAME_ARGS[8]="arguments de Jeux 8" ;
#-------------------------------------------------------------
GAME_NAME[9]="Jeux 9" ;
GAME_PATH[9]="/chemin/vers/jeux9" ;
GAME_ARGS[9]="arguments de Jeux 9" ;
#-------------------------------------------------------------
}

# journal "Chargement..." "_quitter"
function _quitter {
journal "_quitter"
# mettre ici tout ce qui sera nescessaire à la bonne fermeture

	exit 0
}

# journal "Chargement..." "frm_principale"
function frm_principale {
journal "*******************frm_principale*******************"
	zenity --list --width=600 --height=430 --text="$LAQUESTION" \
	--ok-label="Sélectionner" \
	--cancel-label="quitter" \
	--hide-column 1 --column "" --column "${GAME_NAME[0]}" --column "${GAME_ARGS[0]}" \
	1 "${GAME_NAME[1]}" "${GAME_ARGS[1]}" \
	0 "" "" \
	2 "${GAME_NAME[2]}" "${GAME_ARGS[2]}" \
	3 "${GAME_NAME[3]}" "${GAME_ARGS[3]}" \
	4 "${GAME_NAME[4]}" "${GAME_ARGS[4]}" \
	5 "${GAME_NAME[5]}" "${GAME_ARGS[5]}" \
	6 "${GAME_NAME[6]}" "${GAME_ARGS[6]}" \
	7 "${GAME_NAME[7]}" "${GAME_ARGS[7]}" \
	8 "${GAME_NAME[8]}" "${GAME_ARGS[8]}" \
	9 "${GAME_NAME[9]}" "${GAME_ARGS[9]}" \
	0 "" "" \
	100 "journal" "voir les logs" \
	101 "aide" "texte aide" ;
}

# journal "Chargement..." "frm_principale_parser"
function frm_principale_parser {
journal "*******************frm_principale_parser*******************"
journal "frm_principale_parser : $1"
	case $1 in	
		# 1) lanceur "$1" ;;
		[1-9]) lanceur $1 ;;
		100) voir_journal ;;
		101) voir_aide ;;
		0) echo "" ;;
		*) # quitter="1" ;
			_quitter ;;
	esac
}

# journal "Chargement..." "lanceur"
function lanceur {
	nombre=$1
	echo "lancement de ${GAME_NAME[$nombre]}"
	# $MAME "${GAME_PATH[9]}" "${GAME_ARGS[9]}"
}

# journal "Chargement..." "_main"
function _main {
	journal "_main"
	menuchoice=$(frm_principale);
	frm_principale_parser ${menuchoice%|*} # pour corriger le 1|1

	if [ $quitter!="1" ] ; then
		#on boucle tant que quitter est différent de 1
		#pas de else car pas nescessaire ;°)
		_main
	fi
}

# journal "Chargement..." "voir_aide"
function voir_aide {
echo "
ce script crée un fichier journal avec un .log
les fonction _journal et journal
un appel de journal fonctionnera comme echo

_initialisation porte bien son nom
il est lancé avant main
mettre les jeux dedans selon le modèle laissé

_main
la boucle permet de relancer l'interface principale 
chaque fois qu'une action est terminée

frm_principale
lance zenity et retournera le numéro de ligne sélectionnée

frm_principale_parser
effectuera une action selon la réponse donnée par frm_principale

_quitter
permet de fermer plus proprement son application
"
}

# #-initialisation
_initialisation
_main

exit 0

bon code !

Hors ligne

#1902 Le 18/02/2016, à 19:08

kholo

Re : [ VOS SCRIPTS UTILES ] (et eventuelles demandes de scripts...)

pguimier a écrit :

Bonjour voici des scripts pour le répertoire de script nautilus :
Convertir des fichiers svg en pdf (il faut inkscape) :

pour les scripts nautilus des zip contiennent plein de trucs sympas
et une page existe dans la doc d'Ubuntu

Les trucs que j'aime :
j'adore la réduction des pdf

#! /bin/bash

# AUTHOR:	(c) Ricardo Ferreira
# NAME:		Compress PDF 1.4
# DESCRIPTION:	A nice Nautilus script with a GUI to compress and optimize PDF files
# REQUIRES:	ghostscript, poppler-utils, zenity
# LICENSE:	GNU GPL v3 (http://www.gnu.org/licenses/gpl.html)
# WEBSITE:	https://launchpad.net/compress-pdf

# Messages
		# English (en-US)
		error_nofiles="No file selected."
		error_noquality="No optimization level selected."
		error_ghostscript="PDF Compress requires the ghostscript package, which is not installed. Please install it and try again."
		error_nopdf="The selected file is not a valid PDF archive."
		label_filename="Save PDF as..."
		label_level="Please choose an optimization level below."
		optimization_level="Optimization Level"
		level_default="Default"
		level_screen="Screen-view only"
		level_low="Low Quality"
		level_high="High Quality"
		level_color="High Quality (Color Preserving)"
		job_done="has been successfully compressed"

case $LANG in

	pt* )
		# Portuguese (pt-PT)
		error_nofiles="Nenhum ficheiro seleccionado."
		error_noquality="Nenhum nível de optimização escolhido."
		error_ghostscript="O PDF Compress necessita do pacote ghostscript, que não está instalado. Por favor instale-o e tente novamente."
		error_nopdf="O ficheiro seleccionado não é um ficheiro PDF válido."
		label_filename="Guardar PDF como..."
		label_level="Por favor escolha um nível de optimização abaixo."
		optimization_level="Nível de Optimização"
		level_default="Normal"
		level_screen="Visualização no Ecrã"
		level_low="Baixa Qualidade"
		level_high="Alta Qualidade"
		level_color="Alta Qualidade (Preservação de Cores)"
		job_done="foi comprimido com sucesso";;


	es* )
		# Spanish (es-AR) by Eduardo Battaglia
		error_nofiles="Ningún archivo seleccionado."
		error_noquality="Ningún nivel de optimización escogido."
		error_ghostscript="Compress PDF necesita el paquete ghostscript, que no está instalado. Por favor instálelo e intente nuevamente."
		label_filename="Guardar PDF como..."
		label_level="Por favor escoja un nivel de optimización debajo."
		optimization_level="Nivel de Optimización"
		level_default="Normal"
		level_screen="Sólo visualización"
		level_low="Baja calidad"
		level_high="Alta calidad"
		level_color="Alta calidad (Preservación de Colores)";;


	cs*)
		# Czech (cz-CZ) by Martin Pavlík
		error_nofiles="Nebyl vybrán žádný soubor."
		error_noquality="Nebyla zvolena úroveň optimalizace."
		error_ghostscript="PDF Compress vyžaduje balíček ghostscript, který není nainstalován. Nainstalujte jej prosím a opakujte akci."
		label_filename="Uložit PDF jako..."
		label_level="Prosím vyberte úroveň optimalizace z níže uvedených."
		optimization_level="Úroveň optimalizace"
		level_default="Výchozí"
		level_screen="Pouze pro čtení na obrazovce"
		level_low="Nízká kvalita"
		level_high="Vysoká kvalita"
		level_color="Vysoká kvalita (se zachováním barev)";;


	fr*)
		# French (fr-FR) by Astromb
		error_nofiles="Aucun fichier sélectionné"
		error_noquality="Aucun niveau d'optimisation sélectionné"
		error_ghostscript="PDF Compress a besoin du paquet ghostscript, mais il n'est pas installé. Merci de l'installer et d'essayer à nouveau."
		error_nopdf="Le fichier que vous avez sélectionné n'est pas un PDF valide."
		label_filename="Sauvegarder le PDF sous..."
		label_level="Merci de choisir, ci-dessous, un niveau d'optimisation."
		optimization_level="Niveau d'optimisation"
		level_default="Défaut"
		level_screen="Affichage à l'écran"
		level_low="Basse qualité"
		level_high="Haute qualité"
		level_color="Haute qualité (Couleurs préservées)";;

	zh_CN*)
		# Simplified Chinese  (zh_CN) by TualatriX Chou
		error_nofiles="没有选择文件。"
		error_noquality="没有优化优化等级。"
		error_ghostscript="PDF压缩需要ghostscript软件包,但是它没有安装。请先安装然后再重试。"
		error_nopdf="选择的文件不是一个有效的PDF文件"
		label_filename="另存为PDF..."
		label_level="请在下面选择优化等级"
		optimization_level="优化等级"
		level_default="默认"
		level_screen="仅在屏幕上浏览"
		level_low="低品质"
		level_high="高品质"
		level_color="高品质(护色) ";;

        ar*)
                # Arabic (ar) by Mohammed hasan Taha
		error_nofiles="لم يتم اختيار ملف"
		error_noquality="لم يتم اختيار درجة الضغط"
		error_ghostscript="هذا السكربت يحتاج حزمة ghostscript package لذا يرجى تنصيبها ثم اعادة المحاولة"
		error_nopdf="الملف الذي تم اختياره ليس ملف pdf  صالح"
		label_filename="حفظ الملف باسم"
		label_level="الرجاء اختيار درجة الضغط"
		optimization_level="درجة الضغط"
		level_default="افتراضي"
		level_screen="عرض للشاشة فقط(الدرجة الأكثر انخفاضا)"
		level_low="جودة منخفضة"
		level_high="جودة مرتفعة"
		level_color="جودة عالية جدا";;

	ml_IN*)
		# Malayalam (ml_IN) by Hrishikesh K B
		error_nofiles="ഒരു ഫയലും  തിരഞ്ഞെടുത്തിട്ടില്ല."
		error_noquality="യാതൊരു ഒപ്റ്റിമൈസേഷന് ലെവലും  തിരഞ്ഞെടുത്തിട്ടില്ല."
		error_ghostscript="പി ഡി എഫ് കംപ്രസ്സറിന് ഗോസ്റ്റ് സ്ക്രിപ്റ്റ് പാക്കേജ് ആവശ്യമാണ്. ആ പാക്കേജ് ഇന്സ്റ്റാള് ചെയ്ത ശേഷം  ദയവായി വീണ്ടും  ശ്രമിക്കുക."
		error_nopdf="തിരഞ്ഞെടുത്ത ഫയല് സാധുവായ ഒരു പിഡിഎഫ് ആര്ച്ചീവ് അല്ല."
		label_filename="പിഡിഎഫ് ഇങ്ങിനെ സംരക്ഷിക്കുക..."
		label_level="ദയവായി താഴെ നിന്നും  ഒരു ഒപ്റ്റിമൈസേഷന് ലെവല് തിരഞ്ഞെടുക്കുക."
		optimization_level="ഒപ്റ്റിമൈസേഷന് ലെവല് "
		level_default="ഡീഫാള്ട്ട്"
		level_screen="സ്ക്രീനില് കാണാന് മാത്രം  "
		level_low="കുറഞ്ഞ നിലവാരം"
		level_high="കൂടിയ നിലവാരം "
		level_color="കൂടിയ നിലവാരം (നിറം  സംരക്ഷിച്ചിട്ടുള്ളത്)"

esac

VERSION="1.4"
ZENITY=$(which zenity)

pdf_file=$(basename "$1")

# Check if Ghostscript is installed
GS="/usr/bin/ghostscript"
if [ ! -x $GS ]; then
        $ZENITY --error --title="Compress PDF "$VERSION"" --text="$error_ghostscript"
        exit 0;
fi

# Check if the user has selected any files
if [ -z "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" ]; then
        $ZENITY --error --title="Compress PDF "$VERSION"" --text="$error_nofiles"
        exit 0;
fi

# Check if the selected file is a PDF
mimetype=$(file -b -i "$1")
if [ -z "`echo $mimetype | grep -i 'pdf' `" ]; then
	$ZENITY --error --title="Compress PDF "$VERSION"" --text="$error_nopdf"
        exit 0;
fi

# Ask the user to select a compressing format
selected_level=$($ZENITY  --list  --title="Compress PDF "$VERSION"" --text "$label_level" --radiolist  --column "" --column "$optimization_level" TRUE "$level_default" FALSE "$level_screen" FALSE "$level_low" FALSE "$level_high" FALSE "$level_color")
if [ -z "$selected_level" ]; then
        $ZENITY --error --title="Compress PDF "$VERSION"" --text="$error_noquality"
        exit 0;
fi

# Select the optimization level to use
case $selected_level in
        "$level_default")
                COMP_COMMAND="/default"
        ;;
        "$level_screen")
                COMP_COMMAND="/screen"
        ;;
        "$level_low")
                COMP_COMMAND="/ebook"
        ;;
        "$level_high")
                COMP_COMMAND="/printer"
        ;;
        "$level_color")
                COMP_COMMAND="/prepress"
        ;;
esac

# Choose output file name
temp_filename=.temp-"$pdf_file"
suggested_filename=compressed-"$pdf_file"
output_filename=$($ZENITY --file-selection --save --confirm-overwrite --filename="$suggested_filename" --title="$label_filename")

if [ "$?" = 1 ] ; then
        exit 0;
fi

# Extract metadata from the original PDF
pdfinfo "$1" | sed -e 's/^ *//;s/ *$//;s/ \{1,\}/ /g' -e 's/^/  \//' -e '/CreationDate/,$d' -e 's/$/)/' -e 's/: / (/' > .pdfmarks
sed -i '1s/^ /[/' .pdfmarks
sed -i '/:)$/d' .pdfmarks
echo "  /DOCINFO pdfmark" >> .pdfmarks

# Execute ghostscript while showing a progress bar
(echo "0" ;
 gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=$COMP_COMMAND -dNOPAUSE -dQUIET -dBATCH -sOutputFile="$temp_filename" "$1" .pdfmarks
 rm .pdfmarks
 echo "100") | (if `$ZENITY --progress --pulsate --auto-close --title="Compress PDF "$VERSION""`;
                 then
                     mv -f "$temp_filename" "$output_filename" &
                     notify-send "Compress PDF" "$pdf_file $job_done"
                 else
                     killall gs
                     rm "$temp_filename"
                     exit
                 fi)

celui ci "nettoie" les noms de fichiers (disons les divx ici par exemple)

#!/bin/bash
#***************************
# kholo-informatique 2016
# www.kholo-informatique.fr
#***************************
nomLogiciel="$(basename "$0")"
VERSION="2015.10.27.1640"
# ----------------------------------------------
FONCTION="Corriger les noms des divx
Ce script transforme les noms de fichiers pour les simplifier"
# il faut sélectionner un ou plusieurs fichiers

for i in $@; do
	if [ -d "$i" ]; then
		zenity --info --text="
		'$i' est un répertoire.
		usage : sélectionnez un ou plusieurs fichiers
		leurs noms seront simplifiés 
		"
		exit
	fi
done

#~ nbre d'arguments considérés comme nombre de fichiers 
NB_FICHIER=$#

for fichier in "$@"
do
	# VARIABLES
	# 
	# on passe tout en minuscule
	# minuscule={echo $nom_casse |tr '[a-z]' '[A-Z]'}
	extension="${fichier##*.}"
	le_fichier="${fichier%.*}"  
	extension=$(echo ${extension}|tr A-Z a-z)
	le_fichier=$(echo ${le_fichier}|tr A-Z a-z)

	# VERIFICATIONS
	# mettre les extensions désirées
	case $extension in
		avi );;
		mkv );;
		mp4 );;
		flv );;
		webm );;
		txt );;
		* )
		zenity --info --text="fichier $extension n'est pas encore prévu"
		shift
		;;
   esac

	# TRAITEMENTS
	#	
	#~ supprime un modèle dans un nom de fichier
	#~ remplacement="XXXXXXXXXXXXXX"	
	#~ modele="XXXXXXXXXXXXXX"
	#~ le_fichier="${le_fichier//$modele/$remplacement}"
	
	#~ remplacer par rien
	remplacement=""	
	le_fichier="${le_fichier//'films.com'/$remplacement}"	
	le_fichier="${le_fichier//'.com'/$remplacement}"
	le_fichier="${le_fichier//'zone-telechargement'/$remplacement}"
	le_fichier="${le_fichier//'topanalyse'/$remplacement}"
	le_fichier="${le_fichier//'tukif'/$remplacement}"
	le_fichier="${le_fichier//'youporn'/$remplacement}"
	le_fichier="${le_fichier//'xvideos'/$remplacement}"
	le_fichier="${le_fichier//'tube8'/$remplacement}"
	le_fichier="${le_fichier//'xhamster'/$remplacement}"
	le_fichier="${le_fichier//'emule'/$remplacement}"
	le_fichier="${le_fichier//'torrent'/$remplacement}"
	le_fichier="${le_fichier//'youtube'/$remplacement}"
	
	le_fichier="${le_fichier//'www'/$remplacement}"
	
	
	le_fichier="${le_fichier//'french movie'/$remplacement}"
	le_fichier="${le_fichier//'full movie'/$remplacement}"
	le_fichier="${le_fichier//'f70'/$remplacement}"
	le_fichier="${le_fichier//'complete'/$remplacement}"
	le_fichier="${le_fichier//'dvdrip'/$remplacement}"
	le_fichier="${le_fichier//'bdrip'/$remplacement}"
	le_fichier="${le_fichier//'brrip'/$remplacement}"
	le_fichier="${le_fichier//'truefrench'/$remplacement}"
	le_fichier="${le_fichier//'subforced'/$remplacement}"
	le_fichier="${le_fichier//'xvid'/$remplacement}"
	le_fichier="${le_fichier//'720p'/$remplacement}"
	le_fichier="${le_fichier//'x264'/$remplacement}"
	le_fichier="${le_fichier//'ac3'/$remplacement}"
	le_fichier="${le_fichier//'vf'/$remplacement}"
	le_fichier="${le_fichier//'®'/$remplacement}" 
	le_fichier="${le_fichier//'©'/$remplacement}" 
	le_fichier="${le_fichier//'french'/$remplacement}" # attention très utilisé
	#~ le_fichier="${le_fichier//$modele/$remplacement}"

	# remplacer par 1 espace
	remplacement=" "
	le_fichier="${le_fichier//'_20'/$remplacement}"
	le_fichier="${le_fichier//'-'/$remplacement}"
	le_fichier="${le_fichier//'_'/$remplacement}"
	le_fichier="${le_fichier//'+'/$remplacement}"
	le_fichier="${le_fichier//'.'/$remplacement}"

	#~ le_fichier="${le_fichier//$modele/$remplacement}"
	
	#~ gestion des crochets 
	le_fichier="${le_fichier//'['/'('}"	
	le_fichier="${le_fichier//']'/')'}"	
	
	# on remet l'extension
	le_fichier="${le_fichier}.${extension}"
			
	# On supprime les doubles espaces
	#~ var_sans_doubles_espaces=$(echo $var)	
	le_fichier=$(echo $le_fichier)
	
	# on vire le dernier espace à la fin si il y en a un
	modele=" ."
	remplacement="."
	le_fichier="${le_fichier//$modele/$remplacement}"
	
	# ATTENTION renomme le fichier
	mv "${fichier}" "${le_fichier}"	
	# ATTENTION

	shift
done  | zenity --progress --pulsate --text="Traitement des $NB_FICHIER fichiers" --auto-close --auto-kill

#~ zenity --info --text="Traitement des $NB_FICHIER fichiers"
notify-send"Traitement des $NB_FICHIER fichiers"

exit 0

celui pour rassembler rapidement des fichiers dans un sous répertoire

#!/bin/bash
#***************************
# kholo-informatique 2016
# www.kholo-informatique.fr
#***************************
NOM="Déplacer une série dans un dossier"
VERSION="2015.10.23.1747"
#~ Ce script crée des séries dans un sous répertoire
#~ à partir d'un ensemble de fichier
#~ il faut sélectionner un ou plusieurs fichiers

for i in $@; do
	if [ -d "$i" ]; then
		zenity --info --text="
		'$i' est un répertoire.
		usage : sélectionnez un ou plusieurs fichiers
		ils seront réunis dans un sous dossier
		une boite de dialogue vous proposera des choix pour le nom"
		exit
	fi
done

NB_ARG=$#

# Ask the user to select
title="Création d'un dossier"
suggested_text="$1"
suggested_text="${suggested_text%.*}" 

dirdest=$(zenity --entry --title="$title" --entry-text="$suggested_text")
if [ -z "$dirdest" ]; then
        $ZENITY --error --title="$title" --text="traitement interrompu"
        exit 0;
fi

mkdir "$dirdest"
	#~ zenity --info --text="déplacement de 
	#~ $dirdest
	#~ dans
	#~ $@
	#~ "
	
for arg in "$@"
do
	mv "$arg" ./"$dirdest"
	#~ zenity --info --text="TRAITEMENT
	#~ $arg
	#~ $dirdest
	#~ "
	shift
done  | zenity --progress --pulsate --text="Traitement des $NB_ARG fichiers" --auto-close --auto-kill
#~ zenity --info --text="Traitement des $NB_ARG fichiers"
notify-send"Traitement des $NB_ARG fichiers"
exit

celui la crée un sous dossier et y change la résolution des images sélectionnées
une liste permet de choisir parmi des formats

#!/bin/bash
#***************************
# kholo-informatique 2016
# www.kholo-informatique.fr
#***************************
NOM="Créer un dossier avec images réduites"
VERSION="2015.12.17.1743"
# Ce script transforme des photos en différents formats
# dans un sous dossier du nom du format
# si un mauvais format est donné en valeur
# la conversion se basera sur la première valeur pour conserver le ratio d'origine


# il faut sélectionner un ou plusieurs fichiers

for i in $@; do
	if [ -d "$i" ]; then
		zenity --info --text="
		'$i' est un répertoire.
		usage : sélectionnez un ou plusieurs fichiers
		ils seront réduits dans un sous dossier
		du nom de la résolution"
		exit
	fi
done

NB_PHOTOS=$#
# zenity --info --title="nbre de photos :" --text="$NB_PHOTOS"

# ********************************************************
LAQUESTION="Choisissez votre résolution"
COMPLEMENT="
Choisissez une option ou tapez une résolution
puis validez...
-------------------------------------
	format : hauteur x largeur
	sans espace 
-------------------------------------
faites échap ou esc pour quitter"
KA="800x600"
KB="1024x768"
KC="2048x1024"
KD="XXXXXXXXX"
KE="XXXXXXXXX"
KF="exit"

# resolution=$(zenity --entry  --width=600 --height=300 --title="Jour" --text="$LAQUESTION $COMPLEMENT" --entry-text="$KB" "$KA"  "$KB" "$KC" "$KD" "$KE" "$KF")
resolution=$(zenity --entry --title="$LAQUESTION" --text="$COMPLEMENT" --entry-text="$KB" "$KA"  "$KB" "$KC" "$KD" "$KE" "$KF")

if [ $resolution == "" ]; then
	exit 1;
fi

dirdest=$resolution
mkdir "$dirdest"

for arg in "$@"
do
	cp "$arg" ./"$dirdest" && cd "$dirdest" && convert "$arg" -resize $resolution "$arg" && cd ..
	shift
done  | zenity --progress --pulsate --text="Traitement des $NB_PHOTOS photos" --auto-close --auto-kill
# zenity --info --text="Traitement des $NB_PHOTOS photos"
notify-send"Traitement des $NB_PHOTOS photos"
exit

Hors ligne