【问题标题】:limit number of results of find, head is not working [duplicate]限制查找结果的数量,头部不工作[重复]
【发布时间】:2017-12-21 20:25:22
【问题描述】:

除了 head 之外,还有什么可以将我的 find 命令的结果限制为 50? find -L $line | head 50 | -exec ls {} > $a$(basename $line) \;

上面的东西不起作用。我想限制我的输出,因为它需要很长时间才能完成任务并降低我的计算机性能。 :

【问题讨论】:

  • head -n50 而不是 head 50。或者您只是在问题中错过了它?
  • @ViktorKhilin 我在我的代码中错过了这一点。

标签: bash find limit


【解决方案1】:

xargs代替exec怎么样?

检查一下,效果很好。 find / -type f | head -n5 | tr '\n' '\0' | xargs -0 ls

您的情况: find -L $line | head -n50 | tr '\n' '\0' | xargs -0 ls > $a$(basename $line)

【讨论】:

  • 先生,xargsexec 有什么区别?
  • 简短地说:xargs 从 find 命令的输出构造一个参数列表并将其传递给 lsexec 对每个单独的文件执行命令 ls。在你的任务中,我选择了xargs 只是因为知道它的解决方案,而我懒得找到exec 的正确语法:) Xargs 或 exec,你会得到相同的结果。
  • :-) 谢谢@Viktor
  • 你能告诉我$line变量吗?
  • find 将按模式查找所有文件,如果您希望它在 N 个创建的文件后停止查找,您可以从这里尝试第二个解决方案:stackoverflow.com/questions/28413735/… 但它看起来像糟糕的解决方案至于我。
【解决方案2】:

要处理带有<newline> 的文件名,最好使用空分隔符:

find -L "$line" -print0 | head -z -n 50 | xargs -0 ls > "$a$(basename "$line")"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-12
    • 2016-08-26
    • 1970-01-01
    相关资源
    最近更新 更多