Удаление exim4-base

Вы можете использовать findдля создания набора файлов, удовлетворяющих вашим трем критериям:

  • Не старше суток
  • Должен находиться в каталогах, соответствующих 11.*или14.*
  • Сопоставление файлов*.bin

, а затем передать этот список в rsyncдля обработки:

find mnt/IP/ftp/123/./ -mtime -1 \( -path '*/1[14].*/*' -prune \) -name '*.bin' -print0 |
    rsync -av --files-from - --from0 --prune-empty-dirs / dst/    

Я использовал -print0и -from0, чтобы обеспечить правильную обработку файлов с неожиданными символами в именах. Дополнительный /./в пути findуказывает rsync, что все, что находится перед этим компонентом, должно быть удалено из пути назначения. (Если вы решите использовать относительный путь в find(, то есть такой, который не начинается с /), измените источник rsyncс /на ..)


Пример сценария

# All files in the example
find /mnt/IP/ftp/123/./ -type f
/mnt/IP/ftp/123/./11.one/7.skip/skip.bin
/mnt/IP/ftp/123/./11.one/item.bin
/mnt/IP/ftp/123/./12.skip/item.bin
/mnt/IP/ftp/123/./14.one/item.bin
/mnt/IP/ftp/123/./item.bin
/mnt/IP/ftp/123/./sub/13.skip/item.bin
/mnt/IP/ftp/123/./sub/14.next/item.bin
/mnt/IP/ftp/123/./sub/14.next/skip.this
/mnt/IP/ftp/123/./sub/item.bin

# Files matched by "find"
find mnt/IP/ftp/123/./ -mtime -1 \( -path '*/1[14].*/*' -prune \) -name '*.bin' -print
/mnt/IP/ftp/123/./11.one/item.bin
/mnt/IP/ftp/123/./14.one/item.bin
/mnt/IP/ftp/123/./sub/14.next/item.bin

# Files copied by "rsync"
find /mnt/IP/ftp/123/./ -mtime -1 \( -path '*/1[14].*/*' -prune \) -name '*.bin' -print0 |
    rsync -av --files-from - --from0 --prune-empty-dirs / dst/
building file list... done
11.one/
11.one/item.bin
14.one/
14.one/item.bin
sub/
sub/14.next/
sub/14.next/item.bin
0
06.10.2020, 21:59
0 ответов

Теги

Похожие вопросы