我想让Shotwell打开一个文件夹及其所有子文件夹中的所有.cr2文件,我使用什么命令行?


9

就像是

shotwell *.cr2 ./

那是行不通的,但是基本上我想使用Shotwell打开.cr2以当前目录结尾的所有文件(包括子文件夹)

上下文是我丢失了从相机上删除的自记忆卡删除的照片。

在Shotwell的“缺失图像”中有它们的缩略图,但我找不到它们。所以我想我会photorec设法找到他们。结果,photorec给了我一大堆文件夹和文件,足以装满我的硬盘。我决定不逐个筛选所有文件,而是决定在硬盘驱动器上搜索.cr2文件,同时避免使用一个Photogs我不知道的特定文件夹,因为这些文件夹不是photorec数据转储的一部分。


@EliahKagan看评论(这一直持续到聊天!)查看详细这里。我不确定是否以及如何编辑该问题,因此请提出建议,因为您创建了如此漂亮的答案
Zanna

@ user285884对我的答案的最新编辑包括详细的过程,用于建立仅.cr2文件的符号链接树,然后可以在Shotwell中打开它(以及其他一些方法)。这样可以解决在Shotwell中看到额外的非.cr2文件的问题,以及目标设备上没有足够的空间来移动或复制文件的问题。从相关的聊天中,我不确定您是否已解决此问题。
伊利亚·卡根

Answers:


6

通常,您只需要打开Shotwell并将其拖动到文件夹中即可。

如果需要,可以使外壳程序构建一个CR2文件列表,并告诉Shotwell仅打开这些文件。有时候这可能是您想要的,但在这种情况下由于Shotwell的行为(在某些其他情况下,该功能会自动显示您居住在与您打开的图像相同的文件夹。

为了确保Shotwell只知道您感兴趣的图像,您可以将目录树克隆到其他位置,仅复制.cr2文件和包含它们的文件夹,而不复制其他文件。但是,这可能会占用大量的额外空间。因此,另一种方法是建立一个分层符号链接 -在那里,而不必为一个新的目录树的副本,你的原始.cr2文件,你有一个新的目录树syminks给他们。这将占用更少的空间。

这个答案涵盖了所有这些方法。

在Shotwell中打开图像文件夹(包括子文件夹)

Shotwell本身为您提供了两种方法来打开整个目录的照片树。如果这些对您有用,那么您将不需要在命令行中做任何聪明的事情,甚至根本不需要使用它。如果不是这样,您可能最终会结合其他技术来执行此操作。(例如,如果最终创建了符号链接或.cr2文件副本的新目录,则可以使用以下一种方法将其打开。)

方法1:只需在Shotwell中打开整个文件夹。

在Shotwell的“ 文件”菜单中,单击“ 从文件夹导入”。然后选择要从中导入图像的文件夹。这将不仅限于.cr2文件,但是如果您要从多个子文件夹中打开文件,这些子文件夹中包含.cr2通过数码相机创建的图像,则很可能只有这些文件存在。

Shotwell的“文件”菜单中的“从文件夹导入”菜单项的屏幕快照。

雅各布的回答递归显示所有图片(包括所有子文件夹)了解更多信息。

方式2:将文件夹拖到Shotwell中。

在大多数桌面环境和文件浏览器中,您也可以打开Shotwell并将包含图像的文件夹拖到Shotwell窗口中。就像从文件夹导入一样,这是Shotwell建议打开照片的另一种方式。

我将“桌面”文件夹拖到Shotwell中以导入其中包含的图像的屏幕截图。

从文件浏览器窗口或桌面拖动到Shotwell时,可以拖动到特定的库。或者,如果您没有设置多个库,则基本上可以将其拖到任何地方,并且它可以工作。(您甚至不必拖动到左窗格中。)

该方法非常方便,并且与手动选择文件夹一样强大(如上所述,使用“ 文件” >“ 从文件夹导入”)。当您使用上述两种方法之一打开文件或文件夹时,Shotwell都可以选择打开照片而不将其复制到其库中。

Shotwell对话框的屏幕快照,要求用户选择是将图像复制到其Shotwell库的位置,还是在不进行任何复制的情况下就地导入图像。

要导入而不进行复制,请单击“ 就地导入”,而不是“ 复制照片”


使用映像文件名列表启动Shotwell

如果出于某些原因想要或需要通过在终端中运行命令来执行此操作,则可以运行该shotwell命令并将每个图像的文件名作为参数传递给它。Globstar使它变得容易:

shopt -s globstar
shotwell **/*.cr2

这将打开.cr2当前目录中任意位置的文件。它与运行Shotwell然后拖动文件夹不同,因为Shotwell仅尝试导入您为其命名的文件。但是,由于Shotwell通常会显示与您要打开的文件相同的文件夹中的其他图像文件,因此这可能不足以满足您的需求。(您提供的有关该问题的更多信息表明,事实并非如此。请参阅下文,了解替代方法。)

不包括名称以开头的文件或子文件夹.。但是,如果你有CR2文件的名字开始与一个点,随后大部分时间,你可能希望在肖特韦尔打开他们无论如何。除非您以这种方式故意命名了文件或文件夹,否则带有图像或文档文件名扩展名的点文件更有可能是元数据文件,而不是实际的图像或文档。例如,macOS在访问外部媒体(包括闪存驱动器和数码相机)时经常添加此类文件(例如,._kittens.cr2用于实际图片kittens.cr2)。

如果您确实还想查找名称以开头的文件,.或者在名称以开头的文件夹中的文件.,请同时启用dotglob。你可以做到这一点shopt -s dotglob或者同时传递globstar,并dotglobshopt内置:

shopt -s globstar dotglob

默认情况下,glob区分大小写。但是,您可能希望以不区分大小写的匹配文件名,这样才能在截至打开的文件.cr2.Cr2.cR2,和.CR2。为此,可以:

  • 通过运行启用nocaseglob shopt -snocaseglob自身或与其他壳选择。例如,要shotwell在所有.cr2文件上运行,不区分大小写地进行搜索,并包括.-files和.-directories中的文件:

    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 shell选项已启用,这是上述shopt -s globstar命令的作用。如果已经启用,则不需要多个命令。而且,每个shell实例只需设置一次globstar。

您可以通过运行以下命令关闭globstar:

shopt -u globstar

您可以通过运行以下命令来检查 globstar是打开还是关闭:

shopt globstar

如果您在脚本中使用globstar,则如果同一脚本中随后可能有一些代码不是以globstar编写的,则应考虑将其关闭。例如,禁用globstar **时,按您的意思进行编写*通常是没有问题的,但是在启用globstar的情况下,使命令影响的文件远远多于某人的意图,可能会导致严重的问题。

同样,如果您使用dotglob或nocaseglob并希望将其关闭,则可以分别使用shopt -u dotglobshopt -u nocaseglob。您还可以传递多个外壳程序选项以shopt -u同时取消设置它们。例如,关闭globstar, dotglobnocaseglob

shopt -u globstar dotglob nocaseglob

与globstar相比,您可能会犯的严重错误更少,因为您忘记了将dotglob或nocaseglob留在了上面。但是其他人(包括您在Ask Ubuntu等网站上咨询的人)通常会在建议您使用命令时假定dotglob和nocaseglob被禁用,除非您另行告知。

有关这些水珠相关壳选项的详细信息(以及关于在一般水珠),请参阅bash的参考手册。它们全部在4.3.2 Shopt Builtin中涵盖。对于globstar,另请参见3.5.8.1模式匹配。对于dotglob,另请参见3.5.8文件名扩展


建立一个新的目录树

由于您的情况似乎确实需要Shotwell 显示.cr2文件,因此非.cr2文件与.cr2文件位于同一文件夹中,而Shotwell中的图像浏览也会自动提供这些文件,因此您似乎需要具有一个文件夹除.cr2您要打开的文件外,不包含其他图像文件。

移动文件,你建议,是一种方法,但我建议,而不是要么复制的文件,或者更好,使符号链接到文件(见FOLDOC),这是因为:

  • 如果要跨设备移动文件,则无论如何都需要复制,因此在这种情况下移动速度不会更快。
  • 如果有足够的空间,通常最好保留所有未修改的文件夹,直到您对自己所做的一切根据自己的需要是正确的感到满意为止。显然,这并不总是适用或实际的。但就您而言,这些文件是数据恢复操作的结果。保留易于阅读的记录,准确地记录了从何处恢复了什么。
  • 如果选择创建符号链接,则消耗的额外空间量非常小。(不过,如果目标磁盘已完全满,那么您仍然需要释放其上的空间-或使用其他目标磁盘-创建符号链接。)

您还要做出另一个决定。您是否在同一目录中创建所有新条目(无论是副本还是符号链接),从而使文件层次结构扁平化?还是在目标位置创建与包含至少一个.cr2文件的源目录中的每个目录相对应的目录?

  • 展平文件层次结构使您可以轻松一次查看所有文件。特别是,很容易一次查看所有文件的名称和大小,以及在图形文件浏览器中选择文件的任何组合。

  • 但这也会丢失有关它们所在文件夹的信息,这可能很有价值(尽管如果您不移动文件,则可以返回原始文件夹并在其中查找它们)。

  • 但是,扁平化文件层次结构的最大问题是,如果在不同位置两个或多个同名文件,则会发生什么情况。如果将文件层次结构展平,则根据您的操作方式,除了第一个副本之外的所有对象都将无法复制(或链接),并且您将收到错误或警告,或者除最后一个副本之外的所有内容(或链接)都将被复制。被覆盖

    这是我建议复制或进行符号链接而不是移动文件的另一个原因。如果您“成功”将多个文件移动到同一文件中,那么除了最后一个文件,您已经丢失了所有文件!

由于将所有内容压平到一个没有子目录的目录中的缺点,我在这里采用的方法是在目标位置建立一个新的目录树

方法1:复制

我首先展示它是因为它有点简单,但是我建议您创建符号链接(“ Way 2”),尤其是在目标驱动器可能没有足够空间容纳所有文件的情况下。“方法2”稍微复杂一些,因为它使用的技术似乎更少,这是我希望大多数人在这种情况下会偏爱的方式,并且信息适用于这两种方法-有关在路径中转义空间的基本建议-在此处而不是此处。

当您需要复制目录树并且需要自定义复制操作时,通常应使用rsync代替cp。这是其中一种情况。

替换src为包含所有CR2文件的顶级目录的路径,并替换dest为要创建的目录名称,该目录将包含指向CR2文件的符号链接的层次结构,运行:

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

不要忘记/源目录的名称后面的,除非您要在内部创建一个附加的顶层目录dest。就是说,如果您省略了结尾/rsync则将在其中创建目标目录dest。例如,假设src是一个包含no的相对路径/。然后:

  • 随着src/在你的rsync命令,你会得到一个符号链接dest/foo/bar.cr2的文件src/foo/bar.cr2
  • 随着src在你的rsync命令,你会得到一个符号链接的文件。dest/src/foo/bar.cr2src/foo/bar.cr2

由于放置符号链接的顶级目录的名称与包含.cr2符号链接指向的文件的顶级目录的名称相同,因此可能会造成混淆,因此建议您/在目标末尾添加rsync命令中的目录名称。(并且,对于源目录,请为它提供一个空目录,一个不存在的目录或专用于此目的的目录。否则,您将使其他文件夹杂乱无章。)

由于一般情况下,当你通过一个文件或目录的命令行程序或脚本的名称,如果你的目标或源目录路径包含由外壳,好像经过特殊处理的任何空格(或字符\$'和各种其他标点符号),则您必须引用它们。对于“空格2”中最常见的空格,我已经详细介绍了如何执行此操作-该部分中有关引用的建议也适用于此。但是,如果不确定如何引用文件夹的名称,则可以通过简单地将文件夹拖到Temrminal中来让Ubuntu为您完成。它的完整路径将被正确引用粘贴

仅复制.cr2文件和包含它们的文件夹后,您可以在Shotwell中打开目标文件夹。(请参阅上面的“在Shotwell中打开图像文件夹(包括子文件夹)”。)但是,在运行之前rsync,我建议您确定是否要跳过开头的条目,.以及是否要包含带有大小写不同后缀的条目。如果是这样,您将必须运行一些稍微不同的rsync命令。

自定义虚线条目的处理方式和区分大小写

您可能想使用其他rsync命令来更改是否跳过以点开头的文件和目录,以及是否要在区分后缀时区分大小写.cr2

上面的命令确实包含名称以开头的目录和文件.要排除此类文件和目录,请放在--exclude='.*/' --exclude='.*'所有其他--includes和--excludes之前。即,使用该rsync命令代替(与适当的取代srcdest,当然):

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,但不确定要使用哪个命令,则建议您使用该命令以确保不要错过任何内容。但是,您应该注意,点文件可能包含元数据,而像图像一样命名的点文件可能实际上不是图像。请参阅上面“使用图像文件名列表启动Shotwell”部分中关于点文件的讨论,以及下面“方法2”中有关点文件和区分大小写的讨论。

第四个命令不区分大小写,并且(与第二个命令一样)跳过名称以.以下开头的文件和目录:

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

方法2:创建符号链接

我建议您这样做,但是如果目标驱动器上有足够的空间,则方法1可以。您无需阅读方法1即可使用它。

此处介绍的方法.cr2创建文件列表并在列表中循环,根据需要创建目标目录,并使用指向每个.cr2文件的符号链接填充目标目录。

这非常复杂,我建议将其放入脚本中,而不是仅以交互方式键入。您可以将脚本放置在任意位置,但是为了方便起见,我将展示如何将脚本直接放置在主文件夹中。

编写(或粘贴)脚本。

make-symlinks在主文件夹中创建一个文本文件。不需要文件扩展名。

您可以使用任何文本编辑器(例如Vim,Nano,Gedit或Leafpad)进行此操作。但是,请勿使用像LibreOffice Writer这样的文字处理器。(如果需要,您甚至可以通过运行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行中删除。

    名称以开头的文件和目录.通常用于元数据(请参阅上面的“使用图像文件名列表启动Shotwell”部分)。另一方面,如果您想确保拥有所有东西,或者如果您不确定有什么莫名其妙的缺失,那么应该保留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应该看不到任何其他文件。


5

Shotwell将循环浏览在打开图像的每个目录中找到的所有图像,因此find -name '*.cr2' -exec shotwell '{}' +按我最初的建议使用并没有帮助。由于Shotwell的设置非常有限,因此我想到的仅打开所需文件的唯一方法是自行将文件移动到新目录。

您可以使用find

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

更换cpmv,如果你想避免创建重复文件。

笔记:

  • mkdir ~/cr2files 在您的主目录中创建一个新目录
  • find 从当前目录向下遍历树进行递归搜索
  • -type f 仅搜索文件
  • -iname 按名称搜索文件,忽略大小写
  • '*.cr2'.cr2- 结尾的名称-使用引号可阻止外壳在将glob传递给之前扩展它find
  • -not -path './dir/*'将排除目录的内容dir从结果
  • {} 代表找到的文件的路径
  • --之后cp是告诉您cp不要接受任何其他选项,这样可以避免以-引起问题的开头的文件名

然后,您可以使用Shotwell在新目录中打开任何文件,并循环浏览所有文件


为什么还要在目录中打开.jpg和.png文件?我看到它指定* .cr2吗?当我在Shotwell上按向左箭头时,如何仅查看.cr2文件?如果我使用\而不是+,则什么都不会发生:(
user285884'1

哦!@ user285884,这是一个问题,很抱歉,shotwell会在目录中找到的所有图像之间循环播放...让我看看是否可以找到解决方法...
Zanna

@ user285884编辑,但我无法解决一个优雅的解决方案:(
Zanna

1
好的,谢谢您的努力!那么,我在目录中搜索.cr2文件,然后将它们移动到单独的文件夹cr2files中。我已经通过使用mv * .cr2 ../cr2files/在一个子文件夹中完成了该工作!但是,我该如何做并指定要查找的文件?就像“嘿,Linux会在文件夹1-10中查找.cr2文件并将其移到cr2files文件夹中”?感谢Zanna
user285884 '17

1
对于我所处的位置,情况还是不错的。我丢了几张照片。因此,我进行了一次photorec,它给了我一大堆文件夹,足以装满我的整个硬盘。因此,我想查看硬盘驱动器中除一个以外的所有文件夹,因为该文件夹中有大量的.cr2文件,我知道这些文件不是我要找的文件。因此,我希望linux浏览除一个文件夹之外的所有文件夹。我不确定您的代码能做到这一点。{}做什么?还有-v之后的“-”吗?谢谢赞娜!
user285884'1

1

选项1- xargs在文件名包含空格时使用

如以下注释所指出的,back ticks当文件名包含空格时,使用(下面的选项3)将中断。使用find命令并将输出传递给shotwellusing xargs选项的更安全方法如下所示:

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

-print0标志告诉find \0在文件名之间使用(空字符)定界符,并且-0标志告诉xargs我们期望这些\0定界符。

归功于在Stack Overflow上找到的出色答案(如何使用find命令返回的文件列表)。

选项2- -exec在文件名包含空格时使用

如下所述,该-exec选项还支持包含空格的文件名。下面的其他评论指出,当文件数超过限制时,此中断将看起来像这样:

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

选项3-当文件名没有空格时

在过去,文件名之前不能有空格并且不能超过256个字符,此选项可以正常工作。您会在许多其他网站上找到该选项,但不应使用此选项。回想过去,使用find命令并将输出传递给shotwell是最简单的方法:

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

find将从当前目录开始,并包括所有子目录:

  • 注意上面使用back tick而不是单引号'。使用反引号类似于将短语包含在$(...)bash中。
  • 第一个参数.给出find一个起点,即当前目录。您可以通过/home/$USER/Pictures或其他方式代替.
  • 第二个参数-name告诉find搜索文件名(而不是目录)。
  • 该技术适用于所有命令,而不仅仅是shotwell。即你可以使用它catheadtail和其他大多数流行的Linux命令。

使用反引号有时会让人感到烦躁,而且还会出现分词问题。我建议您将其更改为管道xargs 并使用-0所有文件名使用NULL字符串作为分隔符
Sergiy Kolodyazhnyy

此答案中方法的问题在于,当任何文件名或包含文件的目录的任何名称中都包含空格时,它将执行错误的操作。请注意,尽管许多人更喜欢$( )命令替换语法而不是反引号命令替换语法,但这与该问题无关—它们都以完全相同的方式失败。@Serg我建议发布有关如何使用的新答案xargs。(将替代项" "也将不起作用:所有find结果将作为单个参数传递。)
Eliah Kagan

在编写此答案时,我还看到了xargson的选项Stack Overflow。我还将扩展该选项。不幸的是,我今天早上不得不启动Windows 8来修复损坏的NTFS分区,因此测试存在问题。我稍后会更新答案。感谢您指出:)
WinEunuuchs2Unix

为什么不只是使用-exec
Zanna

@Zanna我也将添加该-exec选项:)
WinEunuuchs2Unix

-2

我什至不知道Shotwell甚至打开过原始文件。我敢肯定,使用digikam或darktable可能会获得更多收益。Digikam带有一些Kde组件,并且是一个非常不错的照片管理器。Darktable具有很好的非破坏性编辑功能。


您是否可以扩展此答案(通过编辑)以包含有关如何使用Digikam(或Darktable)仅浏览.cr2文件夹中文件的详细信息?如果是这样,那么这可能很有价值,因为原始海报很难让Shotwell 显示.cr2文件。尽管我在回答中添加了其他方法,以便可以使用Shotwell仅浏览那些文件,而不能浏览其他文件,但我强烈怀疑Shotwell并不是解决此问题的最佳工具。
伊利亚·卡根
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.