0

Linux. скрипт для транслитерации имен файлов

Опубликовано : 27-11-2010 пользователем : alex-saratov | категория : Linux

Потребность в скрипте появилась из-за того, что многие устройства — DVD, телевизоры и т.д., не всегда понимают имена файлов на русском языке. Решаем эту задачу просто и один раз на все случаи жизни.

Для начала создаем файл следующей командой.

gedit ~/.gnome2/nautilus-scripts/транслитерация

Вставляем в этот файл следующий скрипт.

#!/bin/bash
# рекурсивно переводим в транслит имена файлов в каталоге

shopt -s nullglob
for FNAME in * ; do
	TRS=`echo $FNAME | sed "y/абвгдезийклмнопрстуфцы /abvgdezijklmnoprstufcy_/"`
	TRS=`echo $TRS | sed "y/АБВГДЕЗИЙКЛМНОПРСТУФЦЫ/ABVGDEZIJKLMNOPRSTUFCY/"`
	TRS=${TRS//ч/ch};
	TRS=${TRS//Ч/CH} TRS=${TRS//ш/sh};
	TRS=${TRS//Ш/SH} TRS=${TRS//ё/jo};
	TRS=${TRS//Ё/JO} TRS=${TRS//ж/zh};
	TRS=${TRS//Ж/ZH} TRS=${TRS//щ/sh\'};
	TRS=${TRS///SH\'} TRS=${TRS//э/je};
	TRS=${TRS//Э/JE} TRS=${TRS//ю/ju};
	TRS=${TRS//Ю/JU} TRS=${TRS//я/ja};
	TRS=${TRS//Я/JA} TRS=${TRS//ъ/\`};
	TRS=${TRS//Х/KH} TRS=${TRS//х/kh};
	TRS=${TRS//\`} TRS=${TRS//ь/\'};
	TRS=${TRS//\'}
	if [[ `file -b "$FNAME"` == directory ]]; then
		mv -v "$FNAME" "$TRS"
		cd "$TRS"
		"../$0"
		cd ..
	else
	mv -v "$FNAME" "$TRS"
	fi
done

Сохраняем содержимое  и добавляем в правах доступа возможность запуска файла. После этого при нажатии правой кнопки мыши на файле в контекстном меню появится сценарий -> траслитеризация. Единственно что стоит помнить, то что скрипт переводит имена ВСЕХ файлов текущей папки.

Публикация комментария

Вы должны быть авторизованы.