【问题标题】:Naming files after splitting them with split command within a pipeline在管道中使用 split 命令拆分文件后命名文件
【发布时间】:2016-08-01 07:32:48
【问题描述】:

我最近一直在处理拆分大文件并进一步处理它们。

我现在的管道很简单>

find .  -type f -size +100M | split -b 100M

但这并不完全是我所追求的。我希望拆分文件的名称类似于拆分功能的输入文件,例如> find 的输入>

file1
file2
file3

我想在例如的行中输出

file101 file102 ...
file201 file202 ...
file301 file302 ...

我试过了>

split -b 100M -d $(find .  -type f -size +1000M) $(find .  -type f -size +1000M) 

但它没有按我的意愿工作,它会引发错误!

谢谢。

【问题讨论】:

    标签: bash unix split find


    【解决方案1】:

    split 不会从标准输入读取文件名。您必须将文件名作为参数。您可以使用-exec 选项到find 来做到这一点。使用 {} 占位符将文件名替换为输入文件和输出前缀参数。

    find .  -type f -size +100M -exec split -b 100M -d {} {} \;
    

    【讨论】:

    • 啊啊啊,这解释了很多。非常感谢!
    • 但这并不能回答我的问题 - 如何命名这些输出文件?
    • 我想通了,必须用 + 而不是 \;再次感谢。
    • 那行不通。您一次只能将一个输入文件提供给split。如果您使用+,它将尝试将它们全部拆分到一个命令中。
    • 我已经更新了答案以显示如何使用文件名作为 split 的前缀参数。
    猜你喜欢
    • 1970-01-01
    • 2013-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-21
    • 1970-01-01
    • 2012-05-02
    • 1970-01-01
    相关资源
    最近更新 更多