Я хочу, чтобы shotwell открыл все .cr2 файлы в папке и всех ее подпапках, какую командную строку я использую?

Что-то как

shotwell *.cr2 ./

Это не работает, но в основном я хочу использовать shotwell для открытия всех файлов тот конец с .cr2 и в текущем каталоге (включая подпапки)

Контекст - то, что я пропускаю фотографии, что я взял свою камеру, которую я с тех пор удалил прочь моей карты памяти.

Существуют миниатюры для них в "недостающих изображениях shotwell", но я не могу найти их. Таким образом, я полагал, что работал photorec попытаться найти их. В результате photorec дал мне грузоподъемность судна папок и файлов, достаточно что он заполнил мой жесткий диск. Вместо того, чтобы отсеять через все файлы один за другим, я решил искать .cr2 файлы на своем жестком диске при предотвращении конкретной названной папки Photogs то, что я знаю, не имеет их, потому что это не была часть photorec дамп данных.

9
задан 2 September 2018 в 05:36

4 ответа

Я не был осведомленным shotwell, даже открыл необработанные файлы. Я уверен, что Вы могли бы получить больше пробега с digikam или darktable. Digikam идет с некоторыми компонентами Kde и является довольно хорошим менеджером по фотографии. Darktable идет с очень хорошими неразрушающими возможностями редактирования.

-2
ответ дан 23 November 2019 в 05:02

Обычно, Вы захотите просто открыть Shotwell и притянуть папку.

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

Гарантировать Shotwell только знает об изображениях, которыми Вы интересуетесь, Вы могли клонировать дерево каталогов где-то в другом месте, копируя только .cr2 файлы и папки, которые содержат их, но ничто иное. Это может занять существенное дополнительное место, все же. Таким образом, другой подход должен создать иерархию символьных ссылок - где вместо того, чтобы иметь наличие нового дерева каталогов копий Вашего оригинала .cr2 файлы, у Вас есть новое дерево каталогов syminks им. Это поднимает намного меньше пространства.

Этот ответ касается всех тех подходов.

Открытие папки изображений (включая подпапки) в Shotwell

Сам Shotwell дает Вам два способа открыть целое дерево каталогов фотографий. Если они будут работать на Вас, то Вы не должны будете делать ничего умного в командной строке или даже использовать его вообще. В противном случае Вы могли бы закончить тем, что делали это в связи с другой техникой. (Например, если Вы заканчиваете тем, что создали новый каталог символьных ссылок или копии Вашего .cr2 файлы, можно использовать один из этих способов открыть его.)

Путь 1: Просто откройте целую папку в Shotwell.

В Shotwell, в меню File, нажимают Import from Folder. Затем выберите папку, из которой Вы хотите импортировать изображения. Это не будет ограничено .cr2 файлы, но если Вы открываете файлы от нескольких подпапок, содержащих .cr2 изображения создали из цифрового фотоаппарата, затем скорее всего, это будут единственные существующие файлы.

Screenshot of the Import from Folder menu item in the File menu of Shotwell.

Посмотрите ответ Jakob для Показа всех изображений рекурсивно (включайте любые подпапки), для получения дополнительной информации.

Путь 2: Перетащите папку в Shotwell.

С большинством настольных сред и файловых браузеров, можно также открыть Shotwell и перетащить папку, которая содержит изображения в окно Shotwell. Как Импорт от Папки, это - иначе Shotwell, рекомендует открыть фотографии.

Screenshot of me dragging my Desktop folder into Shotwell to import the images it contains.

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

Этот метод очень удобен, и это столь же мощно так вручную выбор папки (с Файлом> Импорт от Папки, как описанный выше). При открытии файлов или папок с помощью любого из этих методов Shotwell дает Вам опцию открыть фотографии, не копируя их в ее библиотеку.

Screenshot of the dialog box in Shotwell that asks the user to choose between copying images to the location of their Shotwell library, or importing them in place, without any copying.

Для импорта без копирования нажмите Import на месте вместо фотографий Копии.


Запуск Shotwell со списком имен файла образа

Если по некоторым причинам Вы хотите или должны сделать это путем выполнения команды в Терминале, можно работать shotwell управляйте и передайте имя файла каждого изображения ему как аргумент. Globstar помогает:

shopt -s globstar
shotwell **/*.cr2

Это открывается .cr2 файлы, расположенные где угодно в текущем каталоге. Это отличается от выполнения Shotwell и затем позорения папки, в том, что Shotwell только попытается импортировать файлы, имена которых Вы даете ему. Однако, так как Shotwell часто показывает другие файлы изображений от тех же папок как файлы, которые Вы сказали ему открывать, это не может быть достаточно для Ваших потребностей. (И дополнительная информация, которую Вы дали о своей проблеме, предполагает, что это не. Посмотрите ниже для альтернативы.)

Это не включает файлы или подпапки, имена которых запускаются с .. Однако, если у Вас есть файлы CR2, имена которых запускаются с точки, затем большую часть времени Вы, вероятно, не хотите открывать их в Shotwell так или иначе. Если Вы сознательно не назвали свои файлы или папки таким образом, dotfile с расширением файла изображения или документа, более вероятно, будет файлом метаданных, а не действительным образом или документом. Например, macOS часто добавляет такие файлы (например, ._kittens.cr2 для фактического изображения kittens.cr2) при доступе к внешним медиа (включая флеш-накопители и цифровые фотоаппараты).

Если Вы действительно хотите также найти файлы, имена которых запускаются с . или это находится в папках, имена которых запускаются с ., затем включите dotglob также. Можно сделать это с shopt -s dotglob или путем передачи обоих globstar и dotglob к shopt встроенный:

shopt -s globstar dotglob

По умолчанию шарики чувствительны к регистру. Но Вы могли бы хотеть соответствовать именам файлов нечувствительно к регистру, чтобы открыть файлы, заканчивающиеся в .cr2, .Cr2, .cR2, и .CR2. Сделать это, также:

  • Включите nocaseglob путем выполнения shopt -s с nocaseglob, или отдельно или с другими опциями оболочки. Например, для выполнения shotwell на всех .cr2 файлы, ища нечувствительно к регистру и включая .- файлы и файлы в .- каталоги:

    shopt -s globstar dotglob nocaseglob
    shotwell **/*.cr2
    
  • Или, использовать .[cC][rR]2 вместо .cr2 в Вашем шаблоне шарика самом. Например, это выполняет то же как выше:

    shopt -s globstar dotglob
    shotwell **/*.[cC][rR]2
    

    Обратите внимание, что чувствительность к регистру является совершенно отдельной от действительно ли . файлы и папки подобраны. Можно удалить dotglob от примеров выше и они могут все еще быть нечувствительными к регистру.

Для определения каталога вместо того, чтобы просто использовать текущий каталог поставьте его имя и a / перед **/*.cr2 шарик. Например, замена shotwell команда выше с этим откроется весь .cr2 файлы в Pictures подкаталог Вашего корневого каталога:

shotwell ~/Pictures/**/*.cr2

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

Тестирование

Если действительно необходимо использовать терминал для этого, то я предполагаю, что это может быть часть чего-то более сложного. Если Вам нравится, можно протестировать такие команды прежде на самом деле выполнить их путем замены shotwell с printf '%s\n'. Вместо того, чтобы передать имена файлов Shotwell, который перечисляет их один на строку. Например, на моей машине:

ek@Io:~$ printf '%s\n' ~/tmp/**/*.cr2
/home/ek/tmp/another image.cr2
/home/ek/tmp/image.cr2
/home/ek/tmp/some folder/image3.cr2

Выключающий Globstar и других опций Shell

Опция оболочки globstar имеет быть позволенной работать, который является что shopt -s globstar команда (выше) сделала. Если это уже включено, то Вам не нужны несколько команд. И только необходимо установить globstar однажды на экземпляр оболочки.

Можно возвратить globstar прочь путем выполнения:

shopt -u globstar

И можно проверить, идет ли globstar или прочь путем выполнения:

shopt globstar

При использовании globstar в сценарии необходимо рассмотреть возвращение его, прочь того, если мог бы быть код, который появляется впоследствии в тот же сценарий, который не записан с globstar в памяти. Например, запись ** когда Вы имеете в виду * не обычно без проблем, когда globstar отключен, но с включенным globstar, он может вызвать серьезные проблемы, заставив команду влиять на намного большее количество файлов, чем кто-то предназначил.

Точно так же, если Вы использовали dotglob или nocaseglob, и Вы хотите, также выключают их, можно сделать так с shopt -u dotglob и shopt -u nocaseglob, соответственно. Можно также передать несколько опций оболочки shopt -u сбрасывать их одновременно. Например, для выключения globstar, dotglob, и nocaseglob:

shopt -u globstar dotglob nocaseglob

По сравнению с globstar существует меньше серьезных ошибок, которые Вы могли бы сделать, потому что Вы забыли отъезд dotglob или nocaseglob на. Но другие люди (включая людей, с которыми Вы консультируетесь по поводу сайтов, любят, Спрашивают, Ubuntu) обычно принимают dotglob, и nocaseglob отключены, когда они предлагают, чтобы команды для Вас использовали, если Вы не говорите им иначе.

Для получения дополнительной информации об этих связанных с шариком опциях оболочки (и также на шариках в целом), см. справочник удара. Они все покрыты, прежде всего, в 4.3.2 Встроенное Shopt. Для globstar см. также 3.5.8.1 Сопоставлений с образцом. Для dotglob см. также 3.5.8 Расширений Имени файла.


Создание нового дерева каталогов

С тех пор в Вашем случае Вам, кажется, действительно нужен Shotwell для показа только .cr2 файлы, Вы имеете не -.cr2 файлы в тех же папках с .cr2 файлы и просмотр изображения в Shotwell автоматически предлагают те файлы также, похоже, что у Вас должна будет быть папка, которая не содержит никакие другие файлы изображений, чем .cr2 файлы Вы пытаетесь открыться.

Перемещение файлов, как Вы предположили, является одним подходом, но я рекомендую вместо этого или копирование файлов или, лучше, делая символьные ссылки на файлы (см. также FOLDOC), потому что:

  • Если Вы перемещаете файлы через устройства, который требует копирования так или иначе, таким образом, в этом случае перемещение не быстрее.
  • Если у Вас есть пространство, это часто - хорошая идея сохранить неизмененную папку всего, что Вы запустили с того, пока Вы не удовлетворены, что то, что Вы сделали, корректно согласно Вашим потребностям. Очевидно, это не всегда применимо или практично. Но в Вашем случае, эти файлы являются результатом операции восстановления данных. Может быть полезно вести легко просмотренный учет точно, что было восстановлено и с где.
  • Если Вы принимаете решение создать символьные ссылки, количество занимавшего дополнительного места является чрезвычайно небольшим. (Если целевой диск будет абсолютно полон, тем не менее, затем, то необходимо будет все еще освободить пространство на нем - или использовать другой целевой диск - для создания символьных ссылок.)

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

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

  • Но это также теряет информацию о том, в каких папках они были, который может быть ценным (хотя можно возвратиться к исходной папке и искать их там, если Вы не перемещаете файлы).

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

    Это - другая причина, я рекомендую копировать или сделать символьные ссылки вместо движущихся файлов. Если Вы "успешно" перемещаете несколько файлов в тот же файл, Вы потеряли всех кроме последнего!

Из-за недостатков выравнивания всего в единственный каталог без подкаталогов подходы, которые я проявляю здесь, создают новое дерево каталогов в месте назначения.

Путь 1: копирование

Я показываю это сначала, потому что это немного более просто, но я предлагаю, чтобы Вы вместо этого создали символьные ссылки ("Путь 2"), особенно если конечный диск не мог бы иметь достаточного количества пространства для содержания всех файлов. "Путь 2", который немного более сложен, намного более подробен, потому что, кажется, существует меньше ресурсов о том, как использовать ту технику, это - способ, которым я ожидаю, что большинство людей в этой ситуации предпочтет, и информация, которая относится к обоим методам - основной совет о выходе из пробелов в путях - дан там, а не здесь.

Когда необходимо скопировать дерево каталогов, и необходимо настроить операцию копии, необходимо обычно использовать rsync вместо cp. Это - один из тех случаев.

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

rsync -rl --prune-empty-dirs --include='*/' --include='*.cr2' --exclude='*' src/ dest

Не забывайте / после названия исходного каталога, если Вы не хотите, чтобы дополнительный каталог верхнего уровня был создан внутри dest. Таким образом, если Вы опускаете запаздывание /, затем rsync сделает целевой каталог для Вас, внутри dest. Например, предположить src относительный путь, содержащий нет /. Затем:

  • С src/ в Вашем rsync команда, Вы получаете символьную ссылку dest/foo/bar.cr2 для файла src/foo/bar.cr2.
  • С src в Вашем rsync команда, Вы получаете символьную ссылку dest/src/foo/bar.cr2 для файла src/foo/bar.cr2.

Так как это могло сбивать с толку каталог верхнего уровня, куда символьные ссылки будут помещены, чтобы иметь то же имя как тот из каталога верхнего уровня, содержащего .cr2 файлы, на которые укажут символьные ссылки, я рекомендую включать / в конце целевого имени каталога в Вашем rsync команда. (И для исходного каталога дайте ему каталог, который пуст, не существует или иначе выделен этой цели. Иначе Вы будете загромождать некоторую другую папку.)

Как обычно имеет место, когда Вы передаете название файла или каталога к программе командной строки или сценарию, если Ваше место назначения или исходные пути к каталогам содержат какие-либо пробелы (или символы, которые рассматривает особенно оболочка, как \, $, ', и различная другая пунктуация), затем необходимо будет заключить им в кавычки. Я детализировал, как сделать это, для наиболее распространенного случая пробелов, "Способом 2" - совет о заключении в кавычки в том разделе применяется здесь также. Однако, если Вы не уверены, как заключить название в кавычки папки, у Вас может быть Ubuntu, делают это для Вас путем простого перетаскивания папки в Temrminal; его полный путь будет вставляться в с корректной цитатой.

После копирования просто .cr2 файлы и папки, которые содержат их, можно открыть папку назначения в Shotwell. (См. "Открытие Папки Изображений (Включая Подпапки) в Shotwell" выше.) Однако перед выполнением rsync, Я рекомендую решить, хотят ли пропустить записи, которые запускаются с . и если Вы хотите включать записи с различными случаем суффиксами. Если так, необходимо будет выполнить некоторых немного отличающихся rsync команда.

Настройка обработки точечных записей и чувствительности к регистру

Можно хотеть использовать другое rsync управляйте, чтобы измениться, пропускаются ли файлы и каталоги, которые запускаются с точки, и хотите ли Вы чувствительность к регистру в соответствии суффиксу .cr2.

Команда выше действительно включает каталоги и файлы, имена которых запускаются с .. Для исключения таких файлов и каталогов поместить --exclude='.*/' --exclude='.*' перед всеми другой --includes и --excludes. Таким образом, используйте это rsync управляйте вместо этого (с соответствующими заменами на src и dest, конечно):

rsync -rl --prune-empty-dirs --exclude='.*/' --exclude='.*' --include='*/' --include='*.cr2' --exclude='*' src/ dest

rsync команды, показанные к настоящему времени, были чувствительны к регистру и не скопируют файлы тот конец в .CR2, .Cr2, или .cR2 вместо .cr2. Если Вы захотите, чтобы такие файлы были скопированы, то необходимо будет объяснить это при помощи --include шаблон *.[cC][rR]2 вместо *.cr2.

Эта третья команда нечувствительна к регистру, и (как первая команда) не пропускает файлы и каталоги, имена которых запускаются с .:

rsync -rl --prune-empty-dirs --include='*/' --include='*.[cC][rR]2' --exclude='*' src/ dest

Если Вы проявляете подход копирования файлов с rsync, и Вы не уверены, какую из этих команд Вы хотите, я предлагаю использовать тот, если Вы хотите удостовериться, что не пропустили что-нибудь. Однако необходимо знать, что dotfiles может содержать метаданные, и dotfiles, названный как изображения, не может действительно быть изображениями. Посмотрите обсуждения dotfiles в разделе "Launching Shotwell with a List of Image Filenames" выше, и dotfiles и чувствительности к регистру "Способом 2" ниже.

Эта четвертая команда нечувствительна к регистру, и (как вторая команда) действительно пропускает файлы и каталоги, имена которых запускаются с .:

rsync -rl --prune-empty-dirs --exclude='.*/' --exclude='.*' --include='*/' --include='*.[cC][rR]2' --exclude='*' src/ dest

Путь 2: создание символьных ссылок

Это - то, что я рекомендую сделать, хотя Путь 1 состоит хорошо в том, если у Вас есть достаточно пространства на конечном диске. Вы не должны читать Путь 1 для использования этого.

Методика, представленная здесь, входит в список .cr2 файлы и циклы через список, создавая целевые каталоги по мере необходимости и заполняя их с символьными ссылками на каждого .cr2 файл.

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

Запишите (или вставка в) сценарий.

Создайте текстовый файл, make-symlinks, в Вашей домашней папке. Никакое расширение файла не необходимо.

Можно сделать это с любым текстовым редактором, как Vim, Нано, Gedit или Leafpad. Не используйте текстовой процессор как Устройство записи LibreOffice, все же. (Вы могли даже сделать это путем выполнения cat > ~/make-symlinks, вставка в содержании файла и нажатие Ctrl+D на новой строке, если Вы хотели.)

Если Вы называете сценарий чем-то другим, чем make-symlinks, удостоверьтесь, что использовали то имя, когда Вы команды выполнения, которые используют сценарий позже.

#!/bin/bash

shopt -s globstar dotglob nocaseglob

for f in **/*.cr2; do
    mkdir -p "$1/$(dirname "$f")"
    ln -s "$PWD/$f" "$1/$f"
done

Помещенный, что в файле, и сохранили файл. Этот сценарий использует globstar, функция Bash, объясненная выше в "Запуске Shotwell со Списком Имен файла образа".

Можно измениться, как это обрабатывает отмеченные точкой записи и чувствительность к регистру.

В зависимости от Ваших потребностей можно хотеть внести некоторые изменения:

  • Если Вы не хотите включать .cr2 файлы, имена которых запускаются с . или это находится в каталогах, имена которых запускаются с ., удалить dotglob от shopt строка.

    Файлы и каталоги, имя которых запускается с . часто используются для метаданных (см. раздел "Launching Shotwell with a List of Image Filenames" выше). С другой стороны, если Вы хотите удостовериться, что у Вас есть все, или если существует что-то необъяснимо пропавшие без вести, что Вы вполне уверены, там, затем должен сохранить dotglob.

  • Если Вы хотите включать только файлы тот конец в точно .cr2 но не варианты случая (.CR2, .Cr2, и .cR2), затем необходимо удалить nocaseglob. Так как Ваша ситуация включает восстановление данных, и Shotwell не покажет Вам ни одного из файлов, которые Вы пропустили при открытии каталога символьных ссылок - в этом суть этого метода, в конце концов - Вы, вероятно, захотите сохранить nocaseglob.

Сделайте это исполняемым файлом.

Выполните эту команду для маркировки исполняемого файла сценария:

chmod +x ~/make-symlinks

Выполните его в источнике и передайте место назначения как аргумент.

Затем измените каталог на исходный каталог, т.е. папку верхнего уровня, которая содержит изображения. Например, если они находятся в Pictures подкаталог Вашего корневого каталога, Вы работали бы:

cd ~/Pictures

Это - то, где Вы запустите скрипт. Передайте целевой каталог сценарию как параметр командной строки.

Например, если Вы хотите названный каталог cr2s чтобы быть созданными на Вашем Рабочем столе для содержания символьных ссылок работайте:

~/make-symlinks ~/Desktop/cr2s

Или если Вы просто хотите тот каталог непосредственно в Вашей домашней папке:

~/make-symlinks ~/cr2s

Или если Вам смонтировали диск в /media/you/MyDrive и Вы хотите создать папку на названном links содержать символьные ссылки:

~/make-symlinks /media/you/MyDrive/links

Но если диск /media/you/My Drive (с пространством), затем необходимо использовать цитату. Любая из этих работ (используют всего один, не выполняйте их всех):

~/make-symlinks '/media/you/My Drive/links'
~/make-symlinks /media/you/'My Drive'/links
~/make-symlinks /media/you/My\ Drive/links

Но если Вы используете ~ для Вашего корневого каталога не заключайте это в кавычки:

~/make-symlinks ~/'Two Words'   # good
~/make-symlinks ~/Two\ Words    # good
~/make-symlinks '~/Two Words'   # BAD, because ~ doesn't get expanded

make-symlinks создает целевой каталог для Вас, если он уже не существует, так же, как он создает подкаталоги в нем. Однако это все еще работает, если место назначения уже существует.

Можно даже выполнить его многократно и передать тот же целевой каталог (например, при прерывании его Ctrl+C) хотя Вы доберетесь failed to create symbolic link ошибки для символьных ссылок, которые уже существуют, и это могло сбивать с толку.

Вы, вероятно, не хотите передавать название каталога, который уже существует и содержит несвязанные файлы (как Ваш корневой каталог) к make-symlinks. Если Вы сделаете, то можно ожидать, что целый набор символьных ссылок и подпапок будет создан в нем. Вы, вероятно, хотите использовать новый каталог - или тот, который еще не существует - для make-symlinks.

Импортируйте недавно созданное дерево символьной ссылки в Shotwell.

После выполнения make-symlinks, просто импортируйте каталог, который Вы передали ему в Shotwell, с помощью любого из методов, данных в первой части этого ответа ("Открывающий Папку Изображений (Включая Подпапки) в Shotwell"). Например, Вы могли открыть Shotwell и опозорить папку.

С тех пор весь записи в папке являются любой символьными ссылками на .cr2 файлы или каталоги, которые содержат их без других типов файлов, Shotwell, не должны видеть ни один из других файлов.

6
ответ дан 23 November 2019 в 05:02

Shotwell циклически повторится через все изображения, найденные в каждом каталоге, где изображение открыто, так использует find -name '*.cr2' -exec shotwell '{}' + как я orginally предположил, действительно не помогает. Так как настройки Shotwell скорее ограничены, единственный способ, которым я могу думать для открытия только файлов, которые Вы хотите, должен переместить файлы в новый каталог собой.

Можно использовать find для этого:

mkdir ~/cr2files
find -type f -iname '*.cr2' -not -path './dir/*' -exec cp -v -- '{}' ~/cr2files \;

Замена cp с mv если Вы не хотите создавать дубликаты файлов.

Примечания:

  • mkdir ~/cr2files сделайте новый каталог в своем корневом каталоге
  • find ищите рекурсивно из текущего каталога вниз через дерево
  • -type f ищите только файлы
  • -iname поиск файлов по имени, игнорируя регистр
  • '*.cr2' имена, заканчивающиеся .cr2 - используйте кавычки для остановки оболочки, расширяющей шарик, прежде чем это будет передано find
  • -not -path './dir/*' исключит содержание каталога dir от результатов
  • {} представляет пути найденных файлов
  • -- после cp должен сказать cp не принять дальнейшие опции, который избегает любого начала имен файлов - порождение проблем

Можно затем открыть любой файл в новом каталоге с Shotwell и циклом через них всех

5
ответ дан 23 November 2019 в 05:02

Опция 1 - Используя xargs когда имена файлов содержат пробелы

Поскольку комментарии ниже указали, с помощью back ticks (Опция 3 ниже), повредится, когда имена файлов будут содержать пробелы. Более безопасный метод использования find команда и передача вывода к shotwell использование xargs опция похожа на это:

find . -name "*.cr2" -print0 | xargs -0 shotwell

-print0 флаг говорит, находят для использования \0 (нулевой символ) разделители между именами файлов, и -0 флаг говорит xargs ожидать их \0 разделители.

Кредит к превосходным ответам нашел здесь (Как передать список по каналу файлов, возвращенных командой находки) на Переполнении стека.

Опция 2 - Используя -exec когда имена файлов содержат пробелы

Поскольку комментарий ниже указывает, -exec опция также поддерживает имена файлов, содержащие пробелы. Другие комментарии ниже указывают, что это повреждается, когда количество файлов превышает, Это было бы похоже на это:

find . -name "*.cr2" -exec shotwell {} +

Опция 3 - Когда имена файлов не имеют пробелов

В былые времена, прежде чем имена файлов имели пробелы и становились 256 символами долго, эта опция хорошо работала. Вы найдете эту опцию упомянутой на многих других веб-сайтах, но Вы не должны использовать эту опцию. Назад в день, с помощью find команда и передача вывода к shotwell был самый простой метод:

shotwell `find . -name "*.cr2"`

Это запускается find из текущего каталога и включает все подкаталоги:

  • Отметьте использование задней галочки и не одинарных кавычек 'выше. Используя обратные галочки подобно включению фразы в $(...) в ударе.
  • Первый аргумент . дает find начальная точка, которая является текущим каталогом. Вы могли передать /home/$USER/Pictures или что-то еще вместо ..
  • Второй аргумент -name говорит находят для поиска имен файлов (не каталоги).
  • Эта техника работает на все команды, не просто shotwell. т.е. можно использовать его для cat, head, tail и большинство других популярных команд Linux.
1
ответ дан 23 November 2019 в 05:02

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

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