Я плохо знаком с Linux и поиском справки со сценарием. Я использую Resilio для резервного копирования фотографий от наших iPhone. Они переходят к '/media/data/phones/myiphone/resilio'
к сожалению, resilio импортирует фотографии в их папках iOS, каждая из которых могла содержать до 100 изображений на папку. Поскольку папка заполняется, уничтоженная iOS делает новую случайную папку DCIM (100APPLE, и т.д.), таким образом, папки будут добавлены к/resilio каталогу периодически, как продиктовано iPhone. Это - часть, которую я нахожу хитрым, поскольку я не хочу изменять сценарий каждый раз, когда новая папка DCIM добавляется.
Я хотел бы извлечь любые изображения и видео в каждой из этих папок "iOS" и переместить их в новый единственный каталог, таким образом, все рисунки находятся в одной папке (извините, каталог):
/media/data/phones/myiphone/pics
Я хотел бы за это быть сделанным один раз в день.
(Каталог рисунков будет затем синхронизироваться к моей машине окон, где я делаю свое фото редактирование, и т.д. но это не первая часть, нуждаются в помощи с.)
Если кто-то мог бы обойти меня через это с начала до конца, включая то, как запланировать сценарий для выполнения, я буду чрезвычайно ценить его. Притворитесь как Вы, объясняло это детсадовцу (кто может считать и ввести).
Я рад разъяснить что-либо, что неясно. Спасибо!!
Сначала запишите простой сценарий для перемещения изображения/видео в желаемый каталог. Что-то как следующее, в файле, названном "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 файлу, сохраните его, и Вы сделаны.
Я беру его, у Вас есть структура папок как /media/data/phones/myiphone/pics/100APPLE
, /media/data/phones/myiphone/pics/101APPLE
и так далее. Это может быть решено с globbing. Шарики в основном используют специальные символы в качестве подстановочных знаков.
Таким образом ls [0-9]foo
будет соответствовать 1foo
и 9foo
, но не 12foo
. *foo
будет соответствовать обоим.
Таким образом, самый легкий шарик может быть??? APPLE, для соответствия любой папке 8 символам на имя, заканчивающееся в APPLE, но с тремя неизвестными начальными символами.
Соответствие любому файлу внутри может быть, покончили *, например, ls ???APPLE/*
перечислит все файлы во всех тех папках.
я использовал ls в качестве примера здесь, но globbing обрабатывается оболочкой, и Вы можете одинаково хорошо mv файлы вместо того, чтобы перечислить их - или перечислить их и пробежать для цикла.
Другой подход использовал бы, находят, как @Drymartini предполагает. Короче говоря, у Вас есть несколько возможностей.
Можно сделать это с man find
, Что-то вроде этого помогло бы:
find ./ -iname *.jp?g -exec cp '{}' photosDir/ \;