LINUX.ORG.RU

Автоматическое переименовывание файлов.


0

0

Есть ли тудлза позволяющая копировать/премещать файлы из каталога в каталог и автоматически в случае совпадении имён (т.е. при наличие в папке файла с таким же именем) изменять имя копируемого файла (такая фишка реализована под ACDSee).

★★★★★

Ответ на: комментарий от anonymous

Смотрел ман но там опухнеш читать а вообще там о написании скриптов.

Ну плз. привидите пример.

cyclon ★★★★★
() автор топика
Ответ на: комментарий от cyclon

/// взято с http://www.opennet.ru/docs/HOWTO-RU/Bash-Prog-Intro.html ///
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

anonymous
()

...а вообще, тебе неплохо бы прежде всего научиться пользоваться поиском

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.