使用 babun 具有多个条件的“查找”以复制到其他硬盘驱动器上

使用 babun 具有多个条件的“查找”以复制到其他硬盘驱动器上

我正在尝试在凌乱的旧硬盘驱动器上复制大量图片,但我无法在 Windows 文件资源管理器中打开这些图片(不要问...),为了帮助我亲爱的奶奶,我必须这么做。我可以用 Babun(很棒的 Windows shell)在其中导航。

到目前为止我已经尝试过命令:

$ find /cygdrive/h/Documents\ and\ Settings -name '*.jpeg|png|JPEG' -exec cp '{}' /cygdrive/f/tof \;

$ find /cygdrive/h/Documents\ and\ Settings -name '*.(jpeg|png|JPEG)' -exec cp '{}' /cygdrive/f/tof \;

没有结果...是我遗漏了什么吗?

答案1

find's -name谓词采用 glob,而不是正则表达式。

如果要将正则表达式与 一起使用find,请使用-regex(或-iregex不区分大小写)。例如:

find ... -regextype egrep -iregex '.*\.(jpe?g|png)$' ...

或者,使用括号对多个-name-iname谓词进行“或”运算,例如:

find ... \( -iname '*.jpg' -o -iname '*.jpeg' -o -iname '*.png' \) ...

笔记:括号需要进行反斜杠转义,以防止 shell 将它们解释为对子 shell 的请求,从而导致-bash: syntax error near unexpected token('`

答案2

我不认为寻找是执行此操作的正确工具,同步可能会更好,但如果您希望所有文件最终都在一个目录中,则 find 可以做到这一点,但您需要删除命令行中 {} 周围的单引号,因为这意味着使用文字 {} 而不是文件名。

相关内容