Linux/Bash中如何将大文件拆分为带前缀的小文件
我在Linux/Bash中如何将大文件拆分为带前缀的小文件,linux,bash,split,Linux,Bash,Split,我在Linux中有一个名为test的文件。现在我想把测试分成10个小文件 test文件有1000多个表名。我希望小文件的行数相等,最后一个文件的表名数可能相同,也可能不同 我想要的是,我们可以在调用Linux终端中的split命令时,为分割文件添加前缀 示例: test_xaa test_xab test_xac and so on.............. 这在Linux中是可能的吗 我发誓斯普利特是自己干的,但令我惊讶的是,它没有 要获取前缀,请尝试以下操作: for x in /pat
Linux
中有一个名为test
的文件。现在我想把测试
分成10个小文件
test
文件有1000多个表名。我希望小文件的行数相等,最后一个文件的表名数可能相同,也可能不同
我想要的是,我们可以在调用Linux
终端中的split
命令时,为分割文件添加前缀
示例:
test_xaa test_xab test_xac and so on..............
这在Linux中是可能的吗 我发誓斯普利特是自己干的,但令我惊讶的是,它没有 要获取前缀,请尝试以下操作:
for x in /path/to/your/x*; do
mv $x your_prefix_$x
done
我用下面的陈述解决了我的问题
split -l $(($(wc -l < test.txt )/10 + 1)) test.txt test_x
split-l$($(wc-l
有了这个,我能够得到期望的结果不清楚,小文件有相同数量的表意味着什么?显示测试文件的示例片段,它可以分为2个块(在2个文件中)google
csplit
我最初误读了这个问题,但我相信我更新的答案是您所需要的。@Active_user-您能更新问题以提供示例数据吗。。。例如,最好知道这些记录是否定义了分隔符。如果是这样,请查看--separator
split操作符。如果您正在运行split
version8.22
它支持-n
,它可以替换-l$($(wc-l
。然后该命令将被拆分为split-n10 test.txt test\u x
@alvits No it can't,这将使行分开。@123-你是对的。我忘了把-nl/10
。它应该是split-nl/10 test.txt test\u x
。@alvits也不会做同样的事情,虽然它保留了完整的行,但它会根据大小而不是行数拆分文件。@alvits偶数-n r/10不会给出像我的答案那样的结果