LINUX.ORG.RU

Сортировка файлов из одной папки в разные папки по датам


0

0

Здравствуйте! Необходимо написать достаточно простой скрипт в bash, суть в следующем: имеется директория с файлами, которые записываются в формате <год-месяц-день-часы:минуты>.<расширение>, например: 2009-01-01-12:00 2009-01-01-13:00 2009-01-02-12:00 2009-01-02-13:00 2009-01-03-12:00 2009-01-03-13:00 нужно эти файлы отсортировать в директории по датам создания, т. е. 2009-01-01, 2009-01-02, 2009-01-03 и тд. Начальная и конечная директории (в которой поддиректории находятся) задаются в качестве аргументов. Помогите пожалуйста начать реализацию в правильном направлении, чтобы в лес за дровами не ходить ))) Заранее спасибо!


foo()
{
  SRC_DIR="$1"
  DST_DIR="$2"

  ls "$SRC_DIR" \
    | cut -d- -f1-3 \
    | sort -u \
    | awk -vd="$DST_DIR" '{ printf "%s/%s\n",d,$0 }' \
    | xargs mkdir 2> /dev/null

  ls "$SRC_DIR" \
    | sed 's/^\([^-]*-[^-]*-[^-]*\)\(.*\)$/\1\2 \1/' \
    | awk -vd="$DST_DIR" -vs="$SRC_DIR" '{ printf "mv -f %s/%s %s/%s\n",s,$1,d,$2 }' \
    | sh -s
}

Не проверял.

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

#/bin/bash 

SRC_DIR="/tmp/test1"
DST_DIR="/tmp/test2"

for F in ${SRC_DIR}/*; do
    SUB=$(date -d"$(stat -c%y "${F}")" +%Y%m%d)
    mkdir -p "${DST_DIR}/${SUB}"
    mv "${F}" "${DST_DIR}/${SUB}/"
done

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