Fórum Ubuntu CZ/SK

Ostatní => Archiv => Téma založeno: mipo 20 Prosince 2006, 17:42:53

Název: Medzery v názve súboru v shell skriptoch
Přispěvatel: mipo 20 Prosince 2006, 17:42:53
Urobil som si skriptím na generovanie webovej galérie. Má zobrať názvy súborov, očíslovať ich ,podľa vstupného parametra $1 pomenovať, vytovriť náhľady a vygenerovať HTML kód. Všetko funguje ako má, pokiaľ názov súboru neobsahuje medzeru, t.j. pokiaľ mám súbor "abx xyz", tak to zoberie ako dva súbory abc a xyz. Ako to urobiť aby súbory s medzerami v názve bral normálne?
Vopred díky!

Kód skriptu:
Kód: [Vybrat]
#!/bin/sh

subory=`ls * 2> /dev/null`
i=1
stlpce=4
riadky=4
pocetStlpcov=0
pocetRiadkov=1

echo '
'
echo '

'

for subor in $subory ; do
  pocetStlpcov=`expr $pocetStlpcov + 1`
  if [ $pocetStlpcov -gt $stlpce ] ; then
    pocetStlpcov=1
    pocetRiadkov=`expr $pocetRiadkov + 1`
    if [ $pocetRiadkov -gt $riadky ] ; then
      echo '

'
    else
      echo '

'
    fi
  fi
  novyNazov=00$i-$1.`echo $subor | tr [A-Z] [a-z] | awk -F. '{ print $2 }'`
  mv $subor $novyNazov
  i=`expr $i + 1`
  convert -geometry 100x $novyNazov "small_"$novyNazov
  echo '

'$novyNazov'
'
done

echo '

'
Název: Medzery v názve súboru v shell skriptoch
Přispěvatel: LS 20 Prosince 2006, 18:11:35
bud do uzovovek nebo pred mezeru pridat backslash (\)
Název: Medzery v názve súboru v shell skriptoch
Přispěvatel: zigi 20 Prosince 2006, 18:27:42
podivej se na man ls a parametry -b a -1 (jedna) a na promenou bashe IFS viz. man bash
Název: Medzery v názve súboru v shell skriptoch
Přispěvatel: mipo 20 Prosince 2006, 20:06:43
ls -1 som skúšal, keď dám ls -b, obajví sa následovné:

Kód: [Vybrat]


mv: cannot stat `obr\\': No such file or directory
convert: unable to open file `001-podsvietenie-pristrojovky.': No such file or directory.

001-podsvietenie-pristrojovky.

mv: cannot stat `1.JPG': No such file or directory
convert: unable to open image `002-podsvietenie-pristrojovky.jpg': No such file or directory.
002-podsvietenie-pristrojovky.jpg

mv: cannot stat `obr\\': No such file or directory
convert: unable to open file `003-podsvietenie-pristrojovky.': No such file or directory.
003-podsvietenie-pristrojovky.

mv: cannot stat `2.JPG': No such file or directory
convert: unable to open image `004-podsvietenie-pristrojovky.jpg': No such file or directory.
004-podsvietenie-pristrojovky.jpg


mv: cannot stat `obr\\': No such file or directory
convert: unable to open file `005-podsvietenie-pristrojovky.': No such file or directory.

005-podsvietenie-pristrojovky.

mv: cannot stat `3.JPG': No such file or directory
convert: unable to open image `006-podsvietenie-pristrojovky.jpg': No such file or directory.
006-podsvietenie-pristrojovky.jpg

mv: cannot stat `obr\\': No such file or directory
convert: unable to open file `007-podsvietenie-pristrojovky.': No such file or directory.
007-podsvietenie-pristrojovky.

mv: cannot stat `4.JPG': No such file or directory
convert: unable to open image `008-podsvietenie-pristrojovky.jpg': No such file or directory.
008-podsvietenie-pristrojovky.jpg


mv: cannot stat `obr\\': No such file or directory
convert: unable to open file `009-podsvietenie-pristrojovky.': No such file or directory.

009-podsvietenie-pristrojovky.

mv: cannot stat `5_1.JPG': No such file or directory
convert: unable to open image `0010-podsvietenie-pristrojovky.jpg': No such file or directory.
0010-podsvietenie-pristrojovky.jpg

mv: cannot stat `obr\\': No such file or directory
convert: unable to open file `0011-podsvietenie-pristrojovky.': No such file or directory.
0011-podsvietenie-pristrojovky.

mv: cannot stat `5.JPG': No such file or directory
convert: unable to open image `0012-podsvietenie-pristrojovky.jpg': No such file or directory.
0012-podsvietenie-pristrojovky.jpg


mv: cannot stat `obr\\': No such file or directory
convert: unable to open file `0013-podsvietenie-pristrojovky.': No such file or directory.

0013-podsvietenie-pristrojovky.

mv: cannot stat `6.JPG': No such file or directory
convert: unable to open image `0014-podsvietenie-pristrojovky.jpg': No such file or directory.
0014-podsvietenie-pristrojovky.jpg

mv: cannot stat `obr\\': No such file or directory
convert: unable to open file `0015-podsvietenie-pristrojovky.': No such file or directory.
0015-podsvietenie-pristrojovky.

mv: cannot stat `7.JPG': No such file or directory
convert: unable to open image `0016-podsvietenie-pristrojovky.jpg': No such file or directory.
0016-podsvietenie-pristrojovky.jpg

Lukáš: ako myslíš úvodzovky, kam ich dať?
Som v podstate začiatočník v skriptoch, takže veľa toho neveim...
Každopádne díky za pomoc!
Název: Medzery v názve súboru v shell skriptoch
Přispěvatel: Pavelp 20 Prosince 2006, 20:30:35
Nepouzivat mezery v nazvech.
Název: Medzery v názve súboru v shell skriptoch
Přispěvatel: Petr Odut 20 Prosince 2006, 20:49:50
misto $subor -> "$subor"
Název: Medzery v názve súboru v shell skriptoch
Přispěvatel: LS 20 Prosince 2006, 21:09:12
Citace: Pavelp
Nepouzivat mezery v nazvech.
Souhlas. To je nesvar, ktery uzivatele naucily Windows 95+ (stejne jako pouzivani diakritiky v nazvech souboru). V praci jsem to uzivatele vice-mene uspesne odnaucil :)
Název: Medzery v názve súboru v shell skriptoch
Přispěvatel: Vojtěch Trefný 20 Prosince 2006, 21:15:03
Citace: lukas.svoboda
Citace: Pavelp
Nepouzivat mezery v nazvech.
Souhlas. To je nesvar, ktery uzivatele naucily Windows 95+ (stejne jako pouzivani diakritiky v nazvech souboru). V praci jsem to uzivatele vice-mene uspesne odnaucil :)
Windows 95? Ty (a 98 taky) při diakritice a mezeře řvaly, že to nejde, ty se daly přidávat až po příchodu ME (nové jádro), ale nejsem si jist na 100% (nejsem zrovna MS Windows specialista).
Název: Medzery v názve súboru v shell skriptoch
Přispěvatel: Jakub Lucký 20 Prosince 2006, 21:47:26
Měsíc na linuxu a taky se to odnaučuju...
Ale je toas  těžké... :-)
Obzvlášť když by to potřebovalo vyřešit mých 8GB hudby apod :-)
Název: Medzery v názve súboru v shell skriptoch
Přispěvatel: LS 20 Prosince 2006, 21:49:23
Citace: vojtech.t
Windows 95? Ty (a 98 taky) při diakritice a mezeře řvaly, že to nejde, ty se daly přidávat až po příchodu ME (nové jádro), ale nejsem si jist na 100% (nejsem zrovna MS Windows specialista).
Podpora dlouhych nazvu a diakritiky v nazvech souboru je opravdu od Win95.
Název: Medzery v názve súboru v shell skriptoch
Přispěvatel: Pavelp 20 Prosince 2006, 21:55:47
Citace: lukas.svoboda
Citace: Pavelp
Nepouzivat mezery v nazvech.
Souhlas. To je nesvar, ktery uzivatele naucily Windows 95+ (stejne jako pouzivani diakritiky v nazvech souboru). V praci jsem to uzivatele vice-mene uspesne odnaucil :)
Zasluzna vec, jsem mene uspesny.
Název: Medzery v názve súboru v shell skriptoch
Přispěvatel: mipo 21 Prosince 2006, 08:32:45
Osobne som nepoužíval medzery a diakritiku ani na Win,a le niektorým ľuďom to nevysvetlíš:-(
Pre jeden web mi posielajú fotky aj neznámy ľudia, takže ich ťažko presvedčím aby nepoužívali medzery a pod.