Страница 1 из 1

Переименование директорий с пробелами

Добавлено: 2013-08-27 16:07:37
ce-zar
Уважаемые гуру, здравствуйте! Есть задача переименовать названия директорий с пробелами. Поискал по инету - нашел штук 10 разных интерпретаций скриптов, однако ничего не получается, вернее, добился того, что если в именах встречается только одна директория, отрабатывает нормально, если несколько, то не может найти пути т.к. считает пробелы разделителями. Неужели ни у кого небыло таких проблем, когда пользователи из под Винды называют папки как хотят. Вот скрипт:

Код: Выделить всё

PR=$(ls -1F | grep " ")
for i in "$PR";
do
_f=`echo "$i" | sed 's/ /_/g'` # новое имя для текущего файла
echo $i
mv -i "$i" "$_f"
done
Пробовал такой

Код: Выделить всё

find  путь -type d -exec sh -c 'mv {} `echo {} | sed "s/ /_/"`' \;
usage: mv [-f | -i | -n] [-v] source target
       mv [-f | -i | -n] [-v] source ... directory
Посоветуйте, плиз, как в таком случае быть.
Спасибо!

Re: Переименование директорий с пробелами

Добавлено: 2013-08-27 16:23:17
Sadok123
Подсказка

Код: Выделить всё

$ ls -1 -i
144368 ???.txt
144363 ??.txt
$ find . -inum 144368 -delete

Re: Переименование директорий с пробелами

Добавлено: 2013-08-27 19:29:33
vg
ce-zar писал(а): Неужели ни у кого небыло таких проблем, когда пользователи из под Винды называют папки как хотят.
Были.

Код: Выделить всё

/usr/ports/sysutils/rename
помог.

http://www.freshports.org/sysutils/rename/

Re: Переименование директорий с пробелами

Добавлено: 2013-08-28 15:19:34
ce-zar
Господа, все оказалось гораздо проще:

Код: Выделить всё

for i in `-1F | sed 's/ /|/g'`
do 
old=`echo $i | sed 's/|/ /g'`
new=`echo "$i" | sed 's/|//g'`
mv -f "$old" "$new"
done
Надо было использовать - |
rename тоже поставил еще до обращения к вам, однако он все время ругается на аргументы, мол их слишком много. Или у меня мозгов слишком мало... :)
Однако, разобрался. Спасибо ответившим!!!