Я пытаюсь написать скрипт "janitor", который будет запускаться как cron
задание в одном определенном каталоге. Предполагается, что он создаст архивную папку с датой создания в имени, а затем найдет и переместит все файлы определенного типа в эту новую папку.
Вот мой тестовый код:
#!/bin/bash
today=$(date +'%m:%d:%Y')
target="Archived-$today"
mkdir -p $target
find . -type f -name "*.zip" -exec mv -i {} /$target \;
Ему удается правильно создать папку, но он не может переместить файлы, которые он находит, в папку. Я делал это только в качестве небольшого теста, и и скрипт, и файлы были созданы одним и тем же пользователем. Если я добавляю sudo
в начало, он пытается переместить файлы, но вместо этого он только удаляет файлы из текущего каталога, но не помещает их в новый созданный каталог.
Я не пытаюсь перемещать .zip файлы. Просто пример.
Я пробовал chmod 777
и на файлах и на папках. Происходит то же самое.
Я использую Ubuntu 14.04 LTS.
Если есть способ сделать это гораздо лучше, пожалуйста, сообщите мне.
Любые указания в правильном направлении будут весьма признательны.
Редактировать
Теперь это работает.
Я обновил find
заявление следующим образом:
find . -maxdepth 1 -type f -name "*.zip" -exec mv -t "$target/" {} \;
решение1
найти файлы в текущем каталоге, но не в подкаталогах:
find . -maxdepth 1 -type f -name '*.zip' -exec mv -t "$target/" {} \;
Метод исключения каталогов:
find . -type f -not -path "$target/*" -name '*.zip' -exec mv -t "$target/" {} \;
Обратите внимание, что это исключит только сегодняшний архив, в то время как у вас будут другие архивы, я рекомендую первую команду или создать архивные каталоги вне основного каталога!