shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Script funções zz


From: Reinaldo Almeida Bonilho
Subject: Script funções zz
Date: Mon, 7 May 2007 08:13:39 -0300

Boa Noite PessoALL,

Acho que todos da lista conhece o script funcoeszz do nosso amigo Aurelio.

É que eu gostaria de utilizar uma das funções do script separadamente:

# ----------------------------------------------------------------------------
# Renomeia arquivos do diretório atual, arrumando nomes estranhos.
# Obs.: ele deixa tudo em minúsculas, retira acentuação e troca espaços em
#       branco, símbolos e pontuação pelo sublinhado _
# Use o -r para ser recursivo e o -d para renomear diretórios também
# Uso: zzarrumanome [-d] [-r] arquivo(s)
# Ex.: zzarrumanome *
#      zzarrumanome -d -r .
#      zzarrumanome "DOCUMENTO MALÃO!.DOC"       # fica documento_malao.doc
#      zzarrumanome "RAMONES - I Don't Care"     # fica ramones-i_don_t_care
# ----------------------------------------------------------------------------
zzarrumanome(){ zzzz -z $1 zzarrumanome && return
local A A1 A2 D i f_R=0 f_D=0;        [ "$1" = '-d' ] && { f_D=1; shift; }
[ "$1" = '-r' ] && { f_R=1; shift; }; [ "$1" = '-d' ] && { f_D=1; shift; }
[ "$1" ] || { echo 'uso: zzarrumanome [-d] [-r] arquivo(s)'; return; }
for A in "$@"; do [ "$A" != / ] && A=${A%/}
[ -f "$A" -o -d "$A" ] || continue; [ -d "$A" ] && {
  [ "$f_R" -eq 1 ] && zzarrumanome -r ${f_D:+-d} "$A"/*
  [ "$f_D" -eq 0 ] && continue; }
A1="${A##*/}"; D='.'; [ "${A%/*}" != "$A" ] && D="${A%/*}";
A2=`echo $A1 | sed "s/[\"']//g"'
y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/;s/^-/_/
y/ÀàÁáÂâÃãÄÅäåÈèÉéÊêËëÌìÍíÎîÏïÇçÑñ/aaaaaaaaaaaaeeeeeeeeiiiiiiiiccnn/
y/ÒòÓóÔôÕõÖöÙùÚúÛûÜüߢУØø§µÝý¥¹²³/oooooooooouuuuuuuubcdloosuyyy123/
s/[^a-z0-9._-]/_/g;s/__*/_/g;s/_\([.-]\)/\1/g;s/\([.-]\)_/\1/g'`
[ "$A1" = "$A2" ] && continue ; [ -f "$D/$A2" -o -d "$D/$A2" ] && {
  i=1 ; while [ -f "$D/$A2.$i" -o -d "$D/$A2.$i" ]; do i=$((i+1)); done
  A2="$A2.$i"; }; mv -v -- "$A" "$D/$A2"; done
}

Alguem pode me ajudar para separar isso em um script somente ?

Muito Obrigado,


reply via email to

[Prev in Thread] Current Thread [Next in Thread]