Пишу написать скрипт для переноса файлов с каталогами. В каталогах лежат и другие файлы, их трогать не нужно, в директории folderbackup1 так например лежит text.tar.bz, его не нужно трогать. Суть скрипта заключается в том , что бы не нужно было проверять , создана ли папка, соотвествующего файла, и всегда помнить от чего это архив.
Файлы которые нужно перенести лежат вот так:
tmp/backups/folderbackup1/test.tar.bz2
tmp/backups/folderbackup2/test.tar.bz2
tmp/backups/folderbackup3/test.tar.bz2
tmp/backups/folderbackup4/test.tar.bz2
tmp/backups/folderbackup5/test.tar.bz2
А нужно перенести вот так , только архивы и проблема в том что не знаю как достать $dirname
Нужное имя директории , что бы перенос был не в /mnt/old/test.tar.bz2 а именно в такую же папку
mnt/old/folderbackup1/test.tar.bz2
mnt/old/folderbackup2/test.tar.bz2
mnt/old/folderbackup3/test.tar.bz2
mnt/old/folderbackup4/test.tar.bz2
Скрипт для поиска архива я написал, с этим проблем не было, а вот с каталогом проблема, код следующий:
#! /bin/bash
find /tmp/backups/ -type f -name "*.tar.bz2" -not -name "text*" -mtime -5 -exec mv {} /mnt/old/ \;
# Но так он просто найдет в директории и поддиректориях все файлы *.tar.bz2, как и нужно, не трогая text.tar.bz2. Старше 5 дней, и просто перенесет их в директорию old. А нужно что бы и в такую же папку.
Команда basename $(dirname) дает название папки, но для многозначной процедуры не подходит.