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