BASH Programming - Введение

         

Программа переименования файлов


#!/bin/sh # renna: переименование нескольких файлов по специальным правилам # Автор - felix hudson Jan - 2000

#Прежде всего, посмотрите на различные "режимы", которые имеются у этой программы. #Если первый аргумент ($1) является подходящим, мы выполняем эту часть #программы и выходим.

# Проверка на возможность добавления префикса. if [ $1 = p ]; then

#Теперь переходим от переменной режима ($1) и префикса ($2) prefix=$2 ; shift ; shift

# Необходимо проверить, задан ли, по крайней мере, хотя бы один файл. # В противном случае, лучше ничего не предпринимать, чем переименовывать несуществующие # файлы!!

if [$1 = ]; then echo "не задано ни одного файла" exit 0 fi

# Этот цикл for обрабатывает все файлы, которые мы задали # программе. # Он осуществляет одно переименование на файл. for file in $* do mv ${file} $prefix$file done

#После этого выполняется выход из программы. exit 0 fi

# Проверка на условие добавления суффикса. # В остальном, данная часть фактически идентична предыдущему разделу; # пожалуйста, смотрите комментарии, содержащиеся в нем. if [ $1 = s ]; then suffix=$2 ; shift ; shift if [$1 = ]; then echo "не задано ни одного файла" exit 0 fi

for file in $* do mv ${file} $file$suffix done

exit 0 fi

# Проверка на условие переименования с заменой. if [ $1 = r ]; then

shift

# Из соображений безопасности автор включил эту часть, чтобы не повредить ни один файл, если пользователь # не определил, что следует выполнить:

if [ $# -lt 3 ] ; then echo "Ошибка; правильный ввод: renna r [выражение] [замена] файлы... " exit 0 fi

# Рассмотрим другую информацию OLD=$1 ; NEW=$2 ; shift ; shift

# Данный цикл for последовательно проходит через все файлы, которые мы # задали программе. # Он совершает одно переименование на файл, используя программу 'sed'. # Это простая программа с командной строки, которая анализирует стандартный # ввод и заменяет регулярное выражение на заданную строку. # Здесь мы задаём для sed имя файла (в качестве стандартного ввода) и заменяем # необходимый текст.

for file in $* do new=`echo ${file} | sed s/${OLD}/${NEW}/g` mv ${file} $new done exit 0 fi

# Если мы достигли этой строки, это означает, что программе были заданы # неправильные параметры. В связи с этим, следует объяснить пользователю, как её # использовать echo "используйте:" echo " renna p [префикс] файлы.." echo " renna s [суффикс] файлы.." echo " renna r [выражение] [замена] файлы.." exit 0

# done!



Содержание раздела