sslug-teknik team mailing list archive
-
sslug-teknik team
-
Mailing list archive
-
Message #75043
Re: rename/copy
On Sun, 18 Jul 2004 18:15:38 +0200
Anders wrote:
> mcp/mmv og andre lignende kommandolinjeprogrammer er beskrevet
> her:
> http://www.karakas-online.de/gnu-linux-tools-summary/working-with-the-file-system.html
Sjovt og interessant link, meget nyttigt.
> Det eneste man kunne savne var et program, der var på alle
> unixmaskiner, ligesom vi, sed, cp osv. der havde denne
> funktionalitet.
Det er jo der shell-scripts kommer ind i billedet. Jeg vil medgive
dig at det somme tider er træls at det er shellen som udfører
wildcard expansion. Derfor forlanger mit hyggelige file-værktøj
ydir også at man sætter 'single quotes om sine wild*cards'. (Det
er et uendeligt primitivt C-program, som bl.a. kan finde den nyeste
fil i et filtræ, praktisk for debugning af andres distro'er).
Tilbage til scripting, her er en lille forklaring:
$FILES=${3-} #det skrives ikke sådan men jeg kan ikke lige huske hvordan.
$unset PLACE
echo ${PLACE-Here}
Here
echo ${PLACE:-Here}
Here
PLACE=""
echo ${PLACE-Here}
echo ${PLACE:-Here}
Here
----
ls $FILES | xargs -iX cp X X-foobar
rename $1 $2 *-foobar
rename -foobar "" *-foobar
----
Nu må du undskylde, hvis jeg har misforstået men jeg syntes at
det var lidt sjovt at prøve at scripte sig ud af ovst.
Jeg kan nemlig bedre lide Christian Iversens loop, så slipper jeg
for xargs. Det koster godt nok at jeg bruger sed, men den kunne
man måske indbygge i shellen næste gang vi laver en ny version af
bash eller pdksh.
I stedet for den fine shell-substitution, som han bruger, kan
man - hvis man bedre kan lide det - bruge echo og sed.
Typisk:
X=$YOURCOMMANDLINEWILDCARD
$OLDSTRING=$1
$NEWSTRING=$2
for u in $X
do
OLDNAME=$u
NEWNAME=$(echo $u|sed 's/$OLDSTRING/$NEWSTRING/')
cp $OLDNAME $NEWNAME
done
... hvor cp kan være any-command.
/Hilsener/Donald
--
donald_j_axel donax snabela get2net.dk -- http://d-axel.dk/
References