Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Помогите подправить скриптик  (Прочитано 725 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ITdreamer

  • Автор темы
  • Новичок
  • *
  • Сообщений: 35
    • Просмотр профиля
Помогите подправить скриптик
« : 24 Ноября 2009, 14:39:25 »
Ребята, я тут нашел скриптик, который рекурсивно меняет права на файлы и папки. Он хорошь, но если в имени файла или папки есть пробел, то он затыкается.
Помогите подправить его, чтобы он мог работать и с файлами и папками, которые содержат пробелы. Может нужно просто добавить кавычки куда-то. Но я не знаю как это сделать. А скриптик очень нужен.

===== начало текста скрипта =====
#!/bin/sh

ROOT_DIR=$1
DIR_PERM=$2
FILE_PERM=$3

for name in $(find ${ROOT_DIR})
do
if [ -d $name ]
then
chmod ${DIR_PERM} ${name}
echo "DIRECTORY: '${name}' PERMS CHANGED TO 0x${DIR_PERM}"
else
chmod ${FILE_PERM} ${name}
echo "FILE: '${name}' PERMS CHANGED TO 0x${FILE_PERM}"
fi
done
===== конец текста скрипта =====

Юзается он так:     doperm.sh /mnt/archive/oldmail 00770 00600

Оффлайн kostryukov

  • Старожил
  • *
  • Сообщений: 1588
  • everybody lies
    • Просмотр профиля
    • kostryukov.net
Re: Помогите подправить скриптик
« Ответ #1 : 24 Ноября 2009, 14:41:58 »
отпишусь, интересна проблема пробелов в именах файлов
у меня можно спросить=)

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: Помогите подправить скриптик
« Ответ #2 : 24 Ноября 2009, 14:42:47 »
В команде chmod надо взять в кавычки $name:

chmod ${DIR_PERM} "${name}"
chmod ${FILE_PERM} "${name}"
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн ITdreamer

  • Автор темы
  • Новичок
  • *
  • Сообщений: 35
    • Просмотр профиля
Re: Помогите подправить скриптик
« Ответ #3 : 24 Ноября 2009, 15:03:28 »
Я тоже так думал.
Нет, это вариант не работает.

Пользователь решил продолжить мысль 24 Ноября 2009, 13:49:52:
отпишусь, интересна проблема пробелов в именах файлов

Буду очень признателен за помощь.

Пользователь решил продолжить мысль 25 Ноября 2009, 11:38:54:
Тема еще актуальна  :), если что. Буду рад любой помощи.
« Последнее редактирование: 25 Ноября 2009, 11:38:54 от ITdreamer »

Оффлайн RandomNT

  • Любитель
  • *
  • Сообщений: 80
    • Просмотр профиля
Re: Помогите подправить скриптик
« Ответ #4 : 25 Ноября 2009, 21:28:01 »
for name in $(find ${ROOT_DIR})не работает тут, потому что если имя файла содержит пробел то на одном шаге цикла в $name попадет первая часть, на следущем шаге - вторая

используем bash и переопределяем $IFS
#!/bin/bash
ROOT_DIR=$1
DIR_PERM=$2
FILE_PERM=$3

IFS=$'\n'
for name in $(find ${ROOT_DIR})
do
if [ -d "$name" ]
then
chmod ${DIR_PERM} "$name"
echo "DIRECTORY: '${name}' PERMS CHANGED TO 0x${DIR_PERM}"
else
chmod ${FILE_PERM} "$name"
echo "FILE: '${name}' PERMS CHANGED TO 0x${FILE_PERM}"
fi
done

 

Страница сгенерирована за 0.047 секунд. Запросов: 25.