Реструктуризация директорий

Есть огромная куча файлов(для директорий -type d), которые нужно перенести в директории по дате, т.е.:

/root_dir/year/
              /month/
                    /day
/dir/2012/
         /02/
            /10
            /13
            /27
/dir/2012/
         /05/
            /12
            /23
            /30

Для этого используем такой скрипт(скрипт писался под CentOS и изменялся под FreeNAS):

CentOS

#!/bin/bash
path="/root/sort/"
dirs=`find $path -maxdepth 1 -type f`
for i in $dirs
do
	date="$(stat -c "%y %n" $i | awk '{ print $1 }' | sed s%-%/%g)"
	if ! [ -d "$date" ]; then
		mkdir -pv "$path$date"
	fi
	mv -v $i $path$date
done

FreeNAS

#!/bin/bash
path="/root/sort/"
dirs=`find $path -maxdepth 1 -type f`
for i in $dirs
do
	date="$(stat -f %Sm -t %Y/%m/%d $i)"
	if ! [ -d "$date" ]; then
		mkdir -pv "$path$date"
	fi
	mv $i $path$date
done

Из за большого объема данных переписал скрипт, find запускался отдельно и сохранял данные в файл, содержимое которого выводил вот так:

for i in $(cat /tmp/file.log)
do
...
done

linuxbash

147 слов(а)

27-02-2015 12:58 +0300

comments powered by Disqus