@devopsregul

Как перенести файлы в директорию с таким же названием Linux?

Пишу написать скрипт для переноса файлов с каталогами. В каталогах лежат и другие файлы, их трогать не нужно, в директории 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) дает название папки, но для многозначной процедуры не подходит.
  • Вопрос задан
  • 129 просмотров
Пригласить эксперта
Ответы на вопрос 1
@xibir
#!/bin/bash
for f in `find /tmp/backups/ -type f -name "*.tar.bz2" -not -name "text*" -mtime -5`; do
   d=/mnt/`dirname ${f#/tmp/backups/}`
   mkdir -p $d
   mv $f $d
done
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы