Рейтинг@Mail.ru
[Войти] [Зарегистрироваться]

Наши друзья и партнеры

UnixForum
Беспроводные выключатели nooLite

Lines Club

Ищем достойных соперников.




Книги по Linux (с отзывами читателей)

Библиотека сайта или "Мой Linux Documentation Project"

Next Previous Contents

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


Эта статья еще не оценивалась
Вы сможете оценить статью и оставить комментарий, если войдете или зарегистрируетесь.
Только зарегистрированные пользователи могут оценивать и комментировать статьи.

Комментарии отсутствуют