fconv et fnconv: le premier argument est le fichier s'il n'est pas spécifié avec -f

This commit is contained in:
Jephté Clain 2015-08-06 14:29:09 +04:00
parent c29f4b9144
commit 48e111aa0d
2 changed files with 34 additions and 7 deletions

21
fconv
View File

@ -7,7 +7,8 @@ function display_help() {
uecho "$scriptname: convertir un fichier ou les fichiers d'un répertoire uecho "$scriptname: convertir un fichier ou les fichiers d'un répertoire
USAGE USAGE
$scriptname [options] -- [cmds...] $scriptname -f FILE [cmds...]
$scriptname FILE [cmds...]
Une ou plusieurs commandes peuvent être spécifiées, séparées // Une ou plusieurs commandes peuvent être spécifiées, séparées //
La commande par défaut est 'lf' La commande par défaut est 'lf'
@ -24,9 +25,16 @@ OPTIONS
Pour la commande conv, inverser src_enc et dest_enc, qui doivent être Pour la commande conv, inverser src_enc et dest_enc, qui doivent être
tous les deux spécifiés. tous les deux spécifiés.
-f, --file FILE -f, --file FILE
Spécifier le fichier ou le répertoire concerné par la conversion. Par Spécifier le fichier ou le répertoire concerné par la conversion. Les
défaut, convertir l'entrée standard. Les options -d et --dir sont aussi aliases -d et --dir sont aussi reconnus.
reconnus et sont des aliases de convenance Si cette option n'est pas spécifiée, le premier argument est considéré
comme le nom du fichier ou du répertoire à convertir. Par défaut,
convertir l'entrée standard.
Si un répertoire est spécifié, tous les fichiers de ce répertoire et de
ses sous-répertoires sont recherchés de façon récursive, sans limite de
profondeur. Ensuite, chacun de ces fichiers est converti.
--show-cmd
Afficher la commande qui serait exécutée
COMMANDES COMMANDES
c, conv dest_enc [src_enc] c, conv dest_enc [src_enc]
@ -178,7 +186,10 @@ parse_opts "${PRETTYOPTS[@]}" \
--show-cmd show_cmd=1 \ --show-cmd show_cmd=1 \
@ args -- "$@" && set -- "${args[@]}" || die "$args" @ args -- "$@" && set -- "${args[@]}" || die "$args"
[ -n "$FILE" ] || FILE=- if [ -z "$FILE" ]; then
FILE="${1:--}"
shift
fi
[ "$FILE" == - ] && FILE=/dev/stdin [ "$FILE" == - ] && FILE=/dev/stdin
if [ "$FILE" != /dev/stdin ]; then if [ "$FILE" != /dev/stdin ]; then
[ -e "$FILE" ] || die "$FILE: fichier introuvable" [ -e "$FILE" ] || die "$FILE: fichier introuvable"

20
fnconv
View File

@ -7,7 +7,8 @@ function display_help() {
uecho "$scriptname: renommer un fichier ou les fichiers d'un répertoire uecho "$scriptname: renommer un fichier ou les fichiers d'un répertoire
USAGE USAGE
$scriptname [options] <file|dir> [cmds...] $scriptname -f FILE [cmds...]
$scriptname FILE [cmds...]
Une ou plusieurs commandes peuvent être spécifiées, séparées // Une ou plusieurs commandes peuvent être spécifiées, séparées //
La commande par défaut est 'fixcase' La commande par défaut est 'fixcase'
@ -21,6 +22,15 @@ OPTIONS
-r, --reverse -r, --reverse
Pour la commande conv, inverser src_enc et dest_enc, qui doivent être Pour la commande conv, inverser src_enc et dest_enc, qui doivent être
tous les deux spécifiés. tous les deux spécifiés.
-f, --file FILE
Spécifier le fichier ou le répertoire concerné par le renommage. Les
aliases -d et --dir sont aussi reconnus.
Si cette option n'est pas spécifiée, le premier argument est considéré
comme le nom du fichier ou du répertoire à renommer.
Si un répertoire est spécifié, le traitement est appliqué à tous les
fichiers et répertoires de façon récursive, sans limite de profondeur.
--show-cmd
Afficher la commande qui serait exécutée
COMMANDES COMMANDES
C, conv dest_enc [src_enc] C, conv dest_enc [src_enc]
@ -194,14 +204,20 @@ CONV_FROM=
CONV_TO= CONV_TO=
OPTIMIZE_CONV=1 OPTIMIZE_CONV=1
REVERSE_CONV= REVERSE_CONV=
FILE=
show_cmd=
parse_opts "${PRETTYOPTS[@]}" \ parse_opts "${PRETTYOPTS[@]}" \
--help '$exit_with display_help' \ --help '$exit_with display_help' \
-N,--detect-always OPTIMIZE_CONV= \ -N,--detect-always OPTIMIZE_CONV= \
-r,--reverse REVERSE_CONV=1 \ -r,--reverse REVERSE_CONV=1 \
-f:,--file:,-d:,--dir: FILE= \
--show-cmd show_cmd=1 \ --show-cmd show_cmd=1 \
@ args -- "$@" && set -- "${args[@]}" || die "$args" @ args -- "$@" && set -- "${args[@]}" || die "$args"
FILE="${1:--}"; shift if [ -z "$FILE" ]; then
FILE="${1:--}"
shift
fi
[ "$FILE" == - ] && FILE=/dev/stdin [ "$FILE" == - ] && FILE=/dev/stdin
if [ "$FILE" != /dev/stdin ]; then if [ "$FILE" != /dev/stdin ]; then
[ -e "$FILE" ] || die "$FILE: fichier introuvable" [ -e "$FILE" ] || die "$FILE: fichier introuvable"