Сценарий для перемещения файлов в новый каталог периодически

Я плохо знаком с Linux и поиском справки со сценарием. Я использую Resilio для резервного копирования фотографий от наших iPhone. Они переходят к '/media/data/phones/myiphone/resilio'

к сожалению, resilio импортирует фотографии в их папках iOS, каждая из которых могла содержать до 100 изображений на папку. Поскольку папка заполняется, уничтоженная iOS делает новую случайную папку DCIM (100APPLE, и т.д.), таким образом, папки будут добавлены к/resilio каталогу периодически, как продиктовано iPhone. Это - часть, которую я нахожу хитрым, поскольку я не хочу изменять сценарий каждый раз, когда новая папка DCIM добавляется.

Я хотел бы извлечь любые изображения и видео в каждой из этих папок "iOS" и переместить их в новый единственный каталог, таким образом, все рисунки находятся в одной папке (извините, каталог):

/media/data/phones/myiphone/pics

Я хотел бы за это быть сделанным один раз в день.

(Каталог рисунков будет затем синхронизироваться к моей машине окон, где я делаю свое фото редактирование, и т.д. но это не первая часть, нуждаются в помощи с.)

Если кто-то мог бы обойти меня через это с начала до конца, включая то, как запланировать сценарий для выполнения, я буду чрезвычайно ценить его. Притворитесь как Вы, объясняло это детсадовцу (кто может считать и ввести).

Я рад разъяснить что-либо, что неясно. Спасибо!!

0
задан 17 October 2017 в 21:36

3 ответа

Сначала запишите простой сценарий для перемещения изображения/видео в желаемый каталог. Что-то как следующее, в файле, названном "backupPhotos.sh". Я должен предположить, что Вы знаете, как использовать текстовый редактор.

#!/bin/bash

cd /media/data/phones/myiphone/resilio
find . -type f -exec mv {} ../pics \;

первая строка говорит для выполнения этого скрипта с помощью/bin/bash (обычно оболочка по умолчанию, которую Вы используете в окне терминала). Строка, запускающаяся с "CD", изменяет текущий рабочий каталог на каталог, где Ваши фотографии сохраняются Resilio. Последняя строка перемещает все файлы в соответствии с resilio каталогом к каталогу рисунков (только файлы будут перемещены "-тип f", не структура каталогов.

затем сделайте:

chmod 755 backupPhotos.sh
mkdir /media/data/phones/myiphone/pics

команда chmod говорит Ubuntu, что файл содержит исполняемый сценарий. Команда mkdir создает каталог "рисунков" для содержания изображений/видео. Если у Вас уже есть каталог рисунков, то Вы не должны делать mkdir.

Испытывают сценарий путем ввода команды

./backupPhotos.sh

в каталоге, где Вы создали тот файл. Примите меры предосторожности, чтобы гарантировать, чтобы Вам сохранили изображения где-то в другом месте во время этой фазы тестирования, на всякий случай что-то идет не так, как надо. После того, как Вы запускаете скрипт, все каталоги под "resilio" должны быть пустыми, и все изображения/видео должны быть в каталоге "рисунков".

, После того как Вы уверены, что это работает правильно, можно запланировать его для выполнения использования crontab. Прежде, чем сделать следующую команду, необходимо определить предпочтительный текстовый редактор путем ввода

export EDITOR=gedit

, Это установит предпочтительного редактора на "gedit" (временно). Замените "gedit" любым текстовым редактором, который Вы любите и установили. Затем введите команду

crontab -e

, Это поместит Вас в Вашего любимого редактора с вероятным пустым crontab файлом. В crontb файле должен быть некоторый текст, но он должен все быть прокомментирован с "#" символом. Вы добавите строку в конце файла для планирования запущения нового скрипта. Строка будет:

0 5 * * * /path_to_script_directory/backupPhotos.sh

, где "path_to_script_directory" является полным путем туда, где сценарий расположен (что-то как/home/mkinsocal). Эти три средние звездочки запускают скрипт каждый день. "0 5" означает, выполняет его в 0 минут после 5:00. Обратите внимание, что у Вас должен быть компьютер и работающий в 5:00 каждый день, чтобы это работало. После того как Вы закончили добавлять строку к своему crontab файлу, сохраните его, и Вы сделаны.

1
ответ дан 26 September 2019 в 04:42

Я беру его, у Вас есть структура папок как /media/data/phones/myiphone/pics/100APPLE, /media/data/phones/myiphone/pics/101APPLE и так далее. Это может быть решено с globbing. Шарики в основном используют специальные символы в качестве подстановочных знаков.

  • * означает любой символ, любое количество раз, включая ни один.
  • ? средства любой символ, по крайней мере, однажды.
  • [abc] будет соответствовать одному перечисленному символу, появляясь, по крайней мере, однажды.
  • [a-z] будет соответствовать одному символу в интервале.

Таким образом ls [0-9]foo будет соответствовать 1foo и 9foo, но не 12foo. *foo будет соответствовать обоим.

Таким образом, самый легкий шарик может быть??? APPLE, для соответствия любой папке 8 символам на имя, заканчивающееся в APPLE, но с тремя неизвестными начальными символами.

Соответствие любому файлу внутри может быть, покончили *, например, ls ???APPLE/* перечислит все файлы во всех тех папках.

я использовал ls в качестве примера здесь, но globbing обрабатывается оболочкой, и Вы можете одинаково хорошо mv файлы вместо того, чтобы перечислить их - или перечислить их и пробежать для цикла.

Другой подход использовал бы, находят, как @Drymartini предполагает. Короче говоря, у Вас есть несколько возможностей.

0
ответ дан 26 September 2019 в 04:42

Можно сделать это с man find

, Что-то вроде этого помогло бы:

find ./ -iname *.jp?g -exec cp '{}' photosDir/ \;
-3
ответ дан 26 September 2019 в 04:42

Другие вопросы по тегам:

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