加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码网 (https://www.900php.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

linux – 每n行拆分批量文本文件

发布时间:2020-12-31 05:41:00 所属栏目:Linux 来源:网络整理
导读:我有一个包含多个文本文件的文件夹.我正在尝试将所有文??本文件拆分为每行10000行,同时保留基本文件名,即如果filename1.txt包含20000行,则输出将为filename1-1.txt(10000行)和filename1-2.txt(10000行) ). 我试图使用split -10000 filename1.txt,但这不保

我有一个包含多个文本文件的文件夹.我正在尝试将所有文??本文件拆分为每行10000行,同时保留基本文件名,即如果filename1.txt包含20000行,则输出将为filename1-1.txt(10000行)和filename1-2.txt(10000行) ).

我试图使用split -10000 filename1.txt,但这不保留基本文件名,我必须为文件夹中的每个文本文件重复该命令.我也试过为* .txt做f;分裂-10000 $f.txt;完成.这也行不通.

知道我怎么能这样做?谢谢.

解决方法

for f in filename*.txt; do split -d -a1 -l10000 --additional-suffix=.txt "$f" "${f%.txt}-"; done

或者,写在多行:

for f in filename*.txt
do
    split -d -a1 -l10000 --additional-suffix=.txt "$f" "${f%.txt}-"
done

这个怎么运作:

> -d告诉split使用数字后缀
> -a1告诉split只以后缀的单个数字开头.
> -l10000告诉split每10,000行分割一次.
> –additional-suffix = .txt告诉split将.txt添加到新文件名称的末尾.
>“$f”告诉拆分要拆分的文件的名称.
>“${f%.txt} – ”告诉拆分用于拆分文件的前缀名称.

假设我们从这些文件开始:

$ls
filename1.txt  filename2.txt

然后我们运行我们的命令:

$for f in filename*.txt; do split -d -a1 -l10000 --additional-suffix=.txt "$f" "${f%.txt}-"; done

完成后,我们现在拥有原始文件和新的拆分文件:

$ls
filename1-0.txt  filename1-1.txt  filename1.txt  filename2-0.txt  filename2-1.txt  filename2.txt

使用较旧的,功能较少的分割形式

如果您的拆分不提供–additional-suffix,那么请考虑:

for f in filename*.txt
do 
    split -d -a1 -l10000 "$f" "${f%.txt}-"
    for g in "${f%.txt}-"*
    do 
        mv "$g" "$g.txt"
    done
done

(编辑:源码网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读