27 февраля 2015 г.

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


Есть огромная куча файлов(для директорий -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

Комментариев нет:

Отправить комментарий