Скрипт сортировки логов

На самом деле это единственный раздел про unix на этом форуме

Модератор: /dev/random

aloalo
Сообщения: 4

Скрипт сортировки логов

Сообщение aloalo » 05.07.2015 11:57

Всем привет, небольшой затык у меня.Есть сервер с файлами. Структура папок. Не могу разобраться как реализовать скрипт, который должен 100500 файлов найти по дате, создать папки с датой создания файла и распихать по ним файлы. типа год/месяц/день. Нашел некоторые скрипты, изменил что-то, работает, но если я каждый раз буду указывать ему нужные папки для поиска.
есть такая структура
Основная папка (в ней) ->
папка1/p1/p2/p3/p4/p5 (В этих папках файлы за разные месяца)
папка2/a1/a2/a3/a4/a5
папка3/b1/b2/b3/b4/b5
папка4/c1/c2/c3/c4/c5
папка5/x1/x2/x3/x4/x5

Сейчас такой скрипт у меня

find /Основная папка/папка1/p1 -type f |
while IFS= read -r file; do
year=$(date -d "$D" '+%Y')
month=$(date -d"$(stat -c %y "${file}")" +%m)
day=$(date -d"$(stat -c %y "${file}")" +%d)
[[ ! -d "/Основная папка/папка1/p1/$year/$month/$day" ]] && mkdir -p "/Основная папка/папка1/p1/$year/$month/$day";
mv "$file" "$/Основная папка/папка1/p1/$year/$month/$day"
done

Не могу понять как сделать так, что бы поиск вести сразу в "Основной папке" а не по каждой папке отдельно. Запустил скрипт а он себе сам по всем папкам нашел, создал директории где нужно, разнес файлы и все. Автоматизация так сказать.
Надеюсь понятно описал то что нужно. Спасибо
Спасибо сказали:

BigBrother
Сообщения: 436
Статус: ¯\_(ツ)_/¯
ОС: linux based

Re: Скрипт сортировки логов

Сообщение BigBrother » 05.07.2015 12:56

aloalo писал(а):
05.07.2015 11:57
Не могу понять как сделать так, что бы поиск вести сразу в "Основной папке" а не по каждой папке отдельно.

http://www.gnu.org/software/findutils/manu...tml#Directories
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 15749
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: Скрипт сортировки логов

Сообщение Bizdelnick » 05.07.2015 15:16

То есть в каталоге, где находится файл, надо создать подкаталоги $year/$month/$day и переместить туда файл? Если да, то так:

Код: Выделить всё

dir="$(dirname "$file")/$year/$month/$day"
mkdir -p "$dir"
mv "$file" "$dir/"
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
команда
новичок
нюанс
приемлемо
проблема
пробовать
трафик
Спасибо сказали: