Bash Shell Script

Небольшой Bash - скриптик, для собственных нужд, выполняющий перекодировку имен файлов и директорий (исправляет "кракозябры"), запакованных архиватором 7zip в формате zip в windows XP, и распакованных в Linux (UTF-8)

#!/bin/bash # bashizm On # fix code page for unpack files and directories packed 7zip format zip in windowsXP # usage: name_script.sh unpackdir # Объявляем переменные # declare variables path="$1" t_file="/tmp/conv_zip.txt" # help function print_help() { echo "Использование: name_script.sh unpackdir" echo "usage: name_script.sh unpackdir" } # delete temp file function del_temp_f() { if [ -e "$t_file" ]; then echo "Выполняем очистку временного файла:""$t_file" echo "run erase temp file" echo "$(rm "$t_file")" fi } function convert() { # получаем, список директорий, записывая их в файл: # receive, list directories and writing file echo "$(find $path -depth -exec echo "{}" >>"$t_file" \;)" # считываем построчно, и выполняем "исправление" кодовой страницы # read line, and "correction" code page names file and dir while read line; do echo "-----------------------------------------------------------------------------------------------" echo "source -->""$line" echo "fix -->""${line%/*}""/""$(echo "${line##*/}" | iconv -t iso8859-1 | iconv -f cp866)" echo "-----------------------------------------------------------------------------------------------" if ! [ "$line" = "${line%/*}""/""$(echo "${line##*/}" | iconv -t iso8859-1 | iconv -f cp866)" ]; then echo "$(mv "$line" "${line%/*}""/""$(echo "${line##*/}" | iconv -t iso8859-1 | iconv -f cp866)")" else echo "Имена, одинаковые, перекодировка не требуется"; echo "The names, identical, code conversion it isn't required" fi done < "$t_file" } # delete temp file del_temp_f if [ "$path" = '' ]; then print_help else # run convert/move convert # clear temp file del_temp_f fi # Grishin Mikhail i-teco(пока ещЁ) 2015