10.02.13

заменить пробел в названии на подчеркивание

ls -1 | awk '{ newfn = $0; if(gsub(" ", "_", newfn)>0) { system("mv \"" $0 "\" " newfn) } }'




remove_sp.sh

для Linux

#!/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
В текущей директории ищет файлы и папки с пробелами в именах. Сначала пытается заменить пробелы на нижнее подчеркивание. В случае неудачи меняет на достаточно уникальный код (дату).