Intereting Posts
Ubuntu автоматически подключается к беспроводной сети, когда она уже подключена eth0 к той же сети как работает blktrace? Невозможно использовать xpra: «Авторизация не распознана» Как применять обновления для OpenBSD, NetBSD и FreeBSD? LVM2 не может разбудить приостановленный логический том Где определить псевдонимы оболочки в конфигах для проектов в tmuxinator? Что делает опция «seclabel» mount? VirtualBox продолжает давать мне ошибки! Может ли переменная оболочки включать – символ? Скрипт, который будет читать 5 чисел, а затем сортировать с самого высокого на самый низкий проверьте, соответствует ли аргумент date в формате yyyy-mm-dd Может ли Linux настроиться на ожидание перезагрузки USB-хранилища, вместо того, чтобы возвращать ошибку ввода-вывода Могу ли я заставить grub вернуться в меню, когда я получу криптовальную кодовую фразу? Как понять SNMP MIB? Почему не перенаправляет файл на именованный канал, но работает с конвейером?

Сценарий Bash не может перемещать файлы

Я пытаюсь написать сценарий «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/" {} \; 

найти файлы в текущем каталоге, а не подразделы:

 find . -maxdepth 1 -type f -name '*.zip' -exec mv -t "$target/" {} \; 

исключить dirs methode:

 find . -type f -not -path "$target/*" -name '*.zip' -exec mv -t "$target/" {} \; 

Обратите внимание, что это исключает только сегодняшний архив, в то время как у вас будет другой архив, я рекомендую первую команду или создаю архив-архив за пределами основного каталога!