Библиотека сайта rus-linux.net
12. Ещё скрипты
12.1 Применение команды ко всем файлам в каталоге.
12.2 Пример: очень простой скрипт резервного копирования (немного получше)
#!/bin/bash
SRCD="/home/" #SRCD - SouRCe Directory - исходный каталог
TGTD="/var/backups/" #TGTD - TarGeT Directory - конечный каталог
OF=home-$(date +%Y%m%d).tgz #OF - Output File - выходной файл
tar -cZf $TGTD$OF $SRCD
12.3 Программа, переименовывающая файлы
#!/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!
12.4 Программа, переименовывающая файлы (простая)
#!/bin/bash
# renames.sh
# простая переименовывающая программа
criteria=$1
re_match=$2
replace=$3
for i in $( ls *$criteria* );
do
src=$i
tgt=$(echo $i | sed -e "s/$re_match/$replace/")
mv $src $tgt
done
Next Previous Contents