[gilug.org] Una mica de tecnica...

Marc Tarrés pardalet_empordanes yahoo es
2005-07-18 17:00:43 UTC


Hola!

> He fet aixo, pero no m'agrada gaire, el veig una mica basto...
> que n'opineu? :-)
> 
> 
> #! /bin/sh
> for p in * ; do
>     o=`echo "$p" | sed s/"$1"//`
>     mv "$p" "$o"
> done

Jo m'he fet aquest, que tindria una funcionalitat una mica més general
de la que descrius.

#!/bin/bash
if [ "$3" == "" ]; then
  echo "Us: ren String1 String2 Fitxers";
else
  for i in $3; do
    j=$(echo "$i" | sed "s/$1/$2/");
    if [ -e "$i" ]; then
      if [ "$i" != "$j" ]; then
        mv "$i" "$j";
      fi
    fi
  done
fi

És a dir, a tots els fitxers indicats per "Fitxers", substitueix
"String1" per "String2". L'única putada és que si Fitxers conté alguna
"wildcard" (*, per ex.), aquest tercer argument s'ha de passar entre
cometes, perquè sinó el bash el resòl i al for només li arriba el primer
fitxer que compleixi la condició de Fitxers.

Espero que sigui d'utilitat, al mateix temps que aprofito per preguntar
si algú sap com evitar haver de posar les cometes aquestes. Mercès!

-- 

 Marc Tarrés Deulofeu

----------------------------------

 pgp_public_key_id: 90FC814B

----------------------------------




Més informació sobre la llista de correu gilug