Я попробовал ваш пример, и он работает должным образом -см. вывод ниже. Какую версию mv
вы используете и на какой системе? И совет, чтобы избежать каких-либо специальных символов (, например. имена с пробелами )делают неожиданные вещи Я рекомендую заключать в кавычки ваши переменные, и вы можете удалить имя файла из цели:mv "$TEMPPATH/file" "$BACKUPPATH/"
.
Пример из вопроса:
$ tree /tmp/directory
/tmp/directory
└── file
0 directories, 1 file
$ tree /backup
/backup
└── path
1 directory, 0 files
$ TEMPPATH="/tmp/directory"
$ BACKUPPATH="/backup/path"
$ mv $TEMPPATH/file $BACKUPPATH/file
$ tree /tmp/directory
/tmp/directory
0 directories, 0 files
$ tree /backup
/backup
└── path
└── file
1 directory, 1 file
По-прежнему не удается воспроизвести:
$ tree /tmp/test /backup/
/tmp/test
└── some-example.sql
/backup/
└── path
1 directory, 1 file
$ TEMPPATH=/tmp/test
$ DATEFORM=some
$ SITE=example
$ BACKUPPATH=/backup/path
$ zip --quiet $TEMPPATH/$DATEFORM-$SITE.sql.zip $TEMPPATH/$DATEFORM-$SITE.sql
$ mv $TEMPPATH/$DATEFORM-$SITE.sql.zip $BACKUPPATH/$SITE
$ tree /tmp/test /backup/
/tmp/test
└── some-example.sql
/backup/
└── path
└── example
1 directory, 2 files
Вы можете комбинировать find
и du
для этого
find /home/vtrefny -type f -mmin -$((7 * 24 * 60)) -printf "%p\0" | du -h -t 1M --time --files0-from=-
find
аргументы
-mmin
--файлы последний раз изменялись X минут назад(cmin
и amin
можно использовать для времени создания/доступа)-$((7 * 24 * 60))
--7 дней в минутах -printf "%p\0"
--путь к файлу печати с завершающим нулевым байтом(du
требуется)du
аргументы
--time
--печать времени последней модификации(--time=<ctime/atime>
может использоваться для времени создания/доступа ). --files0-from=-
--чтение списка файлов из стандартного ввода (, предоставленного find
здесь)