Автоматизация в Linux с помощью shell

Материал из OSZone.net wiki.

Перейти к: навигация, поиск

Вот назрела необходимость сделать свою работу более удобной. Поэтому начал заниматься скриптописанием на shell и вот что из этого вышло :)


Описание скрипта


Поставленная задача: есть некий каталог, внутри которого располагается куча других каталогов. А уже в них, в свою очередь, находятся файлы двух типов: с расширением *.readme и с расширением *.tar.gz. Основная задача скрипта следующая: нужно пройтись по всем подпапкам основной папки (пока таких подпапок около 30, но будет около 700 - вручную уже трудновато будет ;)) и сделать следующее: если в подпапке есть папка readme, тогда вообще пропустить эту папку. В противном случае:

1. Создать папку readme

2. Перенести в созданную папку все файлы с расширением *.readme

Затем выйти из папки, зайти в следующую и повторить то же самое - если есть readme, то пропустить, в противном случае повторить шаг 1 и 2.

Как я всё это сделал можно посмотреть в скрипте. В этом скрипте есть только один недостаток: если файлов с расширением *.readme нет и папки тоже нет, он создаст папку и выдаст сообщение о том, что нет файлов с расширением *.readme. Работа скрипта продолжится, но этот небольшой баг я пока не сумел поправить.


Содержимое скрипта

cd /CPAN
echo "Теперь текущий каталог `pwd`"
objects=`ls`
obj=($objects)
	for i in ${obj[@]}
	do
		if test -d $i
		then
			echo "Переходим в каталог $i..."
			cd $i
			dirobjects=`ls`
			dirs=($dirobjects)
				for g in ${dirs[@]}
				do
					
						if [ $g = "readme" ]
						then
							readme="1"
							break
						else
							readme="-1"
						fi
				done
			if [ $readme = "1" ]
			then
			  echo "Папка readme присутствует, пропускаем обработку"
			elif [ $readme = "-1" ]
			then
			  echo "Создаём папку readme..."
			  mkdir "readme"
			  echo "Переносим все справочные файлы в эту папку..."
			  mv -iv --target-directory="readme" *.readme
			fi
			cd ..
		else
			echo "File detected..."
		fi
	done


Winzip_icon.png Загрузить Info_circle.png

Литература

Обсуждение на форуме

Личные инструменты