哈尼哈尼尼 發表於 2023-9-12 00:00:00

Linux中split大文件分割和cat合并文件详解

<p>
        <span><strong>前言</strong></span></p>
<p>
        当需要将较大的数据上传到服务器,或从服务器下载较大的日志文件时,往往会因为网络或其它原因而导致传输中断而不得不重新传输。这种情况下,可以先将大文件分割成小文件后分批传输,传完后再合并文件。</p>
<p>
        <span><strong>1. 分割文件</strong></span></p>
<p>
        文件分割可以使用split命令,该即支持文本文件分割,又支持二进制文件分割;而合并文件可以使用cat命令。</p>
<p>
        <strong>1.1 文本文件分割</strong></p>
<p>
        分割文本文件时,可以按文件大小分割,也可以按文本行数分割。</p>
<p>
        按文件大小分割</p>
<p>
        按文件大小分割文件时,需要以-C参数指定分割后的文件大小:</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_813423">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">$ </code><code class="bash functions">split</code> <code class="bash plain">-C 100M large_file.txt stxt</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        如上所示,我们将大文件large_file.txt按100M大小进行分割,并指定了分割后文件前缀stxt;当不指定前缀时,split会自动对分割文件进行命名,一般会以x开头。</p>
<p>
        按行分割</p>
<p>
        文本文件还可以以行为单位进行分割,以行数进行分割时会忽略文件大小,并以-l参数指定分割后文件的行数:</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_645641">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">$ </code><code class="bash functions">split</code> <code class="bash plain">-l 1000 large_file.txt stxt</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        <strong>1.2 二进制文件分割</strong></p>
<p>
        二进制文件分割类似于按大小分割文本文件,不同的是以-b参数来指定分割后的文件大小:</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_493821">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">$ </code><code class="bash functions">split</code> <code class="bash plain">-b 100M data.bak sdata</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        <span><strong>2. 文件合并</strong></span></p>
<p>
        文件合并使用cat命令,上面几种方式分割的文件都可以使用cat命令合并。</p>
<p>
        cat命令合并分割文件:</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_109730">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">$ </code><code class="bash functions">cat</code> <code class="bash plain">stxt* &gt; new_file.txt</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        <span><strong>3. 命令格式</strong></span></p>
<p>
        <strong>3.1 split命令说明</strong></p>
<p>
        split命令格式如下:</p>
<p>
        split [选项]... [要切割的文件 [输出文件前缀]]</p>
<p>
        命令参数</p>
<p>
        -a, --suffix-length=N   使用长度为 N 的后缀 (默认 2)</p>
<p>
        -b, --bytes=SIZE        设置输出文件的大小。支持单位:m,k</p>
<p>
        -C, --line-bytes=SIZE   设置输出文件的最大行数。与 -b 类似,但会尽量维持每行的完整性</p>
<p>
        -d, --numeric-suffixes  使用数字后缀代替字母</p>
<p>
        -l, --lines=NUMBER      设备输出文件的行数</p>
<p>
            --help     显示版本信息</p>
<p>
            --version  输出版本信息</p>
<p>
        <strong>3.2 cat命令说明</strong></p>
<p>
        cat是Linux下使用频率较高的命令之一,该令详细介绍:</p>
<p>
        cat连接文件并打印到标准输出设备上</p>
<p>
        cat命令的常见使用场景有:</p>
<p>
        显示文件内容:</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_79897">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">$ </code><code class="bash functions">cat</code> <code class="bash plain">filename</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        创建一个空文件:</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_356073">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">$ </code><code class="bash functions">cat</code> <code class="bash plain">&gt; filename</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        文件合并:</p>
<div class="jb51code">
        <div>
                <div class="syntaxhighlighterbash" id="highlighter_498042">
                        <div class="toolbar">
                                <span>?</span>
</div>
                        <table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
                                                        <div class="line number1 index0 alt2">
                                                                1</div>
                                                </td>
                                                <td class="code">
                                                        <div class="container">
                                                                <div class="line number1 index0 alt2">
                                                                        <code class="bash plain">$ </code><code class="bash functions">cat</code> <code class="bash plain">file1 file2 &gt; </code><code class="bash functions">file</code>
</div>
                                                        </div>
                                                </td>
                                        </tr></tbody></table>
</div>
        </div>
        <div class="codetool" id="codetool">
                <div class="code_n">
                        <textarea></textarea>
</div>
        </div>
</div>
<p>
        <span><strong>总结</strong></span></p>
<p>
        以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。</p>
<p>
        原文链接:https://itbilu.com/linux/man/Nkz2hoeNm.html</p>
頁: [1]
查看完整版本: Linux中split大文件分割和cat合并文件详解