Dmitry V. Levin пишет: > Hi, > > On Wed, Dec 06, 2006 at 03:40:04PM +0300, Vitaly Ostanin wrote: >> Здравствуйте. >> >> Скажите, где я тупой, а? > > Не все пробельные символы одинаковые. > >> В этом скрипте не выполняется проверка [ -d "$FILE" ], если в >> имени $FILE есть пробелы. > > Табуляция там, а не пробелы. На экране да, но почему тогда работает "cut -d ' '" ? Вывод "du" не может меняться в зависимости от того, куда он направлен? Такая мысль пришла в голову по аналогии с разницей вывода "ls" (в несколько столбцов) и "ls | less" (в один столбец) >> #!/bin/sh >> >> do_du() >> { >> du -sbx * | sort -rn | while read f; > du -sbx * | sort -rn | while read size FILE; Спасибо, про несколько name у read не знал. Можно адаптировать и так: du -sbx0 * | sort -rnz | while read -d '\0' size FILE; А затык был именно в "cd -", спасибо ещё раз. >> do >> echo $f > echo "$size $FILE" >> FILE=`echo $f | cut -d ' ' -f2-` > это не нужно >> if [ -d "$FILE" ]; then >> echo "^^^dir^^^" >> cd "$FILE" >> do_du > cd - >> fi >> done >> } >> >> do_du > > Имейте в виду, этот скрипт нельзя запускать в недоверенных каталогах, > он там может заблудиться. Даже realpath не поможет? -- Regards, Vyt mailto: vyt@vzljot.ru JID: vyt@vzljot.ru