clone.sh

download

#!/bin/sh

# DESCR: Clone existing files, handles CVS
# AUTHOR: Darek Cieslak, cieslakd at gazeta.pl
# USE: repl abd def | sh
#
# In ./.replfilter you can include sed commands to
# delete unwanted filenames. Example:
#
# /images\//d
#
# will ignore all files from images directory

TMP_FILE=$$
REPLFILTER=.replfilter

test -z "$1" -o -z "$2" && {
    echo give from, to strings
    exit 1;
}

if ! test -f $REPLFILTER
then
    touch $REPLFILTER
fi

sFrom="$1"
sTo="$2"

FILES=*$sFrom*

find . -name "*$sFrom*" |
sed -f $REPLFILTER |
awk -v "sFrom=$sFrom" -v "sTo=$sTo" '

{
    sFile = $0
    sNewFile = $0
    gsub(sFrom, sTo, sNewFile);

    print "test -f " s New File " || "\
        "sed \"s/" sFrom "/" sTo "/g\" " s File " > " sNewFile
}

'

(...) Nie ma bowiem łatwych odpowiedzi. Nie istnieje nic takiego jak najlepsze rozwiązanie - zarówno jeśli chodzi o narzędzia, jak i języki czy systemy operacyjne. Są jedynie systemy, które mogą być bardziej odpowiednie w konkretnych okolicznościach.

I tu właśnie do gry wchodzi pragmatyzm. Nie należy przywiązywać się do żadnej określonej metody, ale mieć na tyle rozległą wiedzę i doświadczenie, by w danej sytuacji wybrać dobre rozwiązanie. (...)

Andrew Hunt, David Thomas "Pragmatyczny Programista"