[Comm] test -d on directory with space in name
Vitaly Ostanin
=?iso-8859-1?q?vyt_=CE=C1_vzljot=2Eru?=
Ср Дек 13 13:36:24 MSK 2006
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 не поможет?
<skipped/>
--
Regards, Vyt
mailto: vyt на vzljot.ru
JID: vyt на vzljot.ru
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : signature.asc
Тип : application/pgp-signature
Размер : 252 байтов
Описание: OpenPGP digital signature
Url : <http://lists.altlinux.org/pipermail/community/attachments/20061213/2a855282/attachment-0003.bin>
Подробная информация о списке рассылки community