LINUX.ORG.RU
ФорумAdmin

bash script


0

0

Люди помогите пожалуйста
Не могу скрирт написать, который переименовывает файлы, точнее, удаляет пробелы из имен. Хотел что-тот вроде
for i in `find`
do
rename $i `echo $i | sed 's/ //'`
done

но in понимает `find` как массив, в котором значения разделены не только
символом \n но и пробелом. А как с этим бороться?

anonymous

find /dir -type f -print0 | xargs -0 -n 1 sh -c 'mv -i "$1" $(echo $1 | tr " " _)' xxx

dilmah ★★★★★
()

> но in понимает `find` как массив, в котором значения разделены не только
> символом \n но и пробелом. А как с этим бороться?
За это отвечает переменная окружения IFS (Internal Field Separator - man bash). Достаточно сделать IFS=$'\n' и пробел перестанет быть разделителем, все начнет работать.

P.S. Не знаю как у кого, но у меня иногда ...=$'\n' глючило, приходилось \n вводить Enter-ом.

spirit ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.