Bash скрипт перевода имен файлов в нижний регистр
Самый простой способ:
for i in `ls`; do mv "$i" `echo "$i" | tr "[:upper:]" "[:lower:]"`; done |
и все, но мы же не ищем легких путей, под катом небольшой скриптик:
#используем локальные переменные, ибо функция рекурсивна |
local lcase_name=$(tr 'A-Z' 'a-z' <<< $name ) |
# для облегчения работы, проверим в нижнем ли регистре имя файла |
if [[ $name != $lcase_name ]]; then |
# если файл уже в нижнем регистре, то нам надо быть аккуратнее |
if [[ -e $path / $lcase_name ]]; then |
# если это директория и существующий файл - тоже директория, используем слияние |
if [[ -d $path / $lcase_name && -d $path / $name ]]; then |
# если мы все успешно переместили, удалим оставшиеся в большом регистре файлы |
for subdir_item in "$path/$name" |
# проверяем также дублирование файлов |
if [[ -e $path / $lcase_name / $subdir_name ]]; then |
echo "CONFLICT: Cannot move item $subdir_item to $path/$lcase_name as that destination already exists" |
# тут мы не можем удалить файлы |
# у нас получится переместить файлы |
echo "MERGE: $subdir_item to $path/$lcase_name/$subdir_name" |
mv "$subdir_item" "$path/$lcase_name/" |
# если мы все успешно переместили, удаляем директорию |
if [[ $can_delete_dir -eq 1 ]]; then |
echo "DELETE: $path/$name having merged all its contents elsewhere" |
# если такой же файл существует, не перезаписываем, а выводим сообщение об ошибке и продолжаем |
echo "CONFLICT: Cannot rename file $path/$name to $path/$lcase_name as that file already exists" |
# в этой директории нет имен файлов, удовлетворяющих нашим условиям - переименовываем |
echo "RENAME: $path/$name to $path/$lcase_name" |
mv "$path/$name" "$path/$lcase_name" |
[[ -n $start_dir && -e $start_dir ]] || { echo "Please supply the starting directory as a parameter to the script" ; |
# обрезать все окончания с '/' |
Использование скрипта:
разрешаем выполнение
запускаем указывая директорию которую конопатить
23.05.2015 в 16:17
· Ссылка
Все работает. Спасибо, выручил.
24.05.2015 в 04:43
· Ссылка
Пожалуйста!)
23.03.2013 в 13:27
· Ссылка
Пожалуйста!)
23.03.2013 в 07:01
· Ссылка
Большое спасибо. Все четко и понятно