lowercase filenames
Michal Kubecek
mike na mk-sys.cz
Čtvrtek Červen 26 21:20:45 CEST 2003
On Thu, Jun 26, 2003 at 06:38:46PM +0200, Pavel Kraus wrote:
> #!/bin/bash
> new=$(/bin/echo $1 | /usr/bin/tr [:upper:] [:lower:] )
> /bin/mv $1 $new
Zběžným pohledem mne napadají tři důvody, proč je to špatně:
1. Co se stane, pokud jméno souboru neobsahuje žádné velké písmeno?
2. Co se stane, pokud zadáte 'ABC' a existuje jiný soubor jménem 'abc'?
3. Co se stane, když jméno souboru obsahuje mezeru?
Taže bych spíš navrhoval:
--------------------------------------------------------------------
#!/bin/bash
for ofn in "$@"; do
nfn=`echo "$ofn" | tr '[:upper:]' '[:lower:]'`
if [ -e "$nfn" ]; then
if [ "$nfn" != "$ofn" ]; then
echo "Soubor '$nfn' exituje!" >&2
fi
else
mv "$ofn" "$nfn"
fi
done
--------------------------------------------------------------------
nebo
--------------------------------------------------------------------
#!/bin/bash
while [ $# -gt 0 ]; do
nfn=`echo "$1" | tr '[:upper:]' '[:lower:]'`
if [ -e "$nfn" ]; then
if [ "$nfn" != "$1" ]; then
echo "Soubor '$nfn' exituje." >&2
fi
else
mv "$1" "$nfn"
fi
shift
done
--------------------------------------------------------------------
Píšu to z hlavy, takže tam určitě budou nějaké překlepy...
Michal Kubeček
Další informace o konferenci Linux