Содержание |
В ряде случаев пробел в имени файла требует несколько особой обработки. Дело в том, что в UNIX-подобных системах пробелом традиционно разделяются аргументы. Следовательно, если имя файла или директории содержит в себе пробел, то последний надлежит экранировать. Скока юзеру ни говори, а он все равно будет создавать всякие там "Новая папка" и "Текстовый документ.txt". Можно это считать аксиомой :-) Ладно, попробуем переименовать. приурочим это действо к еженощному бекапу, например.
#!/bin/bash # if [ $1 ] # then # cd $1 # переход в указанный каталог # else # echo 'Use: remove_sp.sh directory' # exit 1 # fi # специальный заменитель для особо тупорылых юзверей d=`date '+%Y%m%d%H%M'` while [ 0 -lt `find . -maxdepth 1 -name "* *" | wc -l` ] do # есть имена с пробелами if [ !`rename " " "_" *` ] # попробуем переименовать по простому... then # просто заменить пробел на _ не удалось, наверно такое имя уже есть rename " " _${d}_ * fi done exit 0
В текущей директории ищет файлы и папки с пробелами в именах. Сначала пытается заменить пробелы на нижнее подчеркивание. В случае неудачи меняет на достаточно уникальный код (дату).
Для начала придется установить команду rename
# cd /usr/ports/sysutils/rename/ # make && make install && make clean
Следует отметить, что синтаксис у нее несколько другой, нежели в Linux.
#!/bin/bash