【问题标题】:Strange errror while using find in batch script在批处理脚本中使用 find 时出现奇怪的错误
【发布时间】:2015-05-05 13:07:37
【问题描述】:

我正在尝试使用这段代码递归地调整文件夹内大于 1 MB 的 jpg 文件的大小。

find . -type f -size +1M -name "*.jpg" | xargs convert -resize 1000x1000\> -verbose

收到错误消息(在 15-20 次迭代后中断批处理)

xargs: convert: terminated by signal 9

如何解决这个问题?

【问题讨论】:

  • 这会将多个文件名传递给convert,我认为它无法正确处理。你确定这是在做你想做的事情,而不是踩到你的一大块原始文件吗?

标签: linux shell find xargs


【解决方案1】:

根据我的经验,xargs 并不是在所有情况下都能正常工作,只是作为一个建议,如果您需要快速解决问题,请尝试使用 -exec

find . -type f -size +1M -name "*.jpg" -exec convert {} -resize 1000x1000\> -verbose {} \;

看看对你有没有帮助

【讨论】:

  • 如果我需要两个 {} 怎么办?
【解决方案2】:

如果您的文件名称中包含空格,xargs 将无法正常工作。为了让它有机会工作,您应该使用以下语法:

find . -type f -size +1M -name "*.jpg" -print0 | xargs -0 convert -resize 1000x1000\> -verbose

这将插入空字符作为分隔符,而不是使用空格作为分隔符。

【讨论】:

    猜你喜欢
    • 2015-07-06
    • 2010-12-29
    • 2015-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-11
    • 2012-02-02
    相关资源
    最近更新 更多