将大文件拆分成多个小文件

将大文件拆分成多个小文件

如何将大文件拆分成较小的文件?

我怎样才能通过pssh

我如何将这些文件放回客户端计算机并将它们重新组合为原始文件?

答案1

您可以使用splitLinux 中的实用程序根据大小或行数来分割文件。

  • split——将文件拆分成几部分

          `split [OPTION]... [INPUT [PREFIX]]`
    

解释:

  • 将固定大小的 INPUT 片段输出到 PREFIXaa、PREFIXab、...;默认大小为 1000 行,默认 PREFIX 为“x”。如果没有 INPUT,或者 INPUT 为 -,则读取标准输入。

选项:

  • -a, --后缀长度=N use suffixes of length N (default 2)
  • -b, --bytes=大小 put SIZE bytes per output file
  • -C, --line-bytes=大小 put at most SIZE bytes of lines per output file
  • -d, --数字后缀 use numeric suffixes instead of alphabetic
  • -l, --lines=NUMBER put NUMBER lines per output file
  • --详细 print a diagnostic just before each output file is opened
  • - 帮助 display this help and exit
  • - 版本 output version information and exit

SIZE 可能是(或者可能是可选后跟的整数)下列之一:KB 1000、K 1024、MB 1000*1000、M 1024*1024,等等(对于 G、T、P、E、Z、Y)。*

例子:

  • $ split --bytes 500M --numeric-suffixes --suffix-length=3 abc abc.

(其中输入文件名是 abc,最后一个参数是输出前缀)

  • 与简短选项相同:

$ split -b 100k -d -a 3 abc abc.

分割命令生成名为:abc.000、abc.001... 的片段

要重新组装生成的部分,您可以使用例如:

$ cat abc.* > abc_2

(假设 shell 对 shell 通配符的结果进行排序 - 并且各部分的数量不超过系统相关的参数限制)

您可以通过以下方式比较结果:

$ cmp abc abc_2 $ echo $?

(输出应为 0)

或者,您可以结合使用 find/sort/xargs 来重新组装各个部分:

$ find -maxdepth 1 -type f -name 'abc.*' | sort | xargs cat > abc_3

  • 您也可以做类似的事,但它将创建名为 xaa xab xac... 的包含 3000 行的文件:

$split -l 3000 filename

  • 另一个选项是,按输出文件的大小进行拆分(仍然按换行符拆分):

$split -C 50m --numeric-suffixes input_filename output_prefix

创建类似 output_prefix01 output_prefix02 output_prefix03 的文件...每个文件的最大大小为 50 兆字节。

噓:

[feddy@localhost ~]$ pscp.pssh --help
Usage: pscp.pssh [OPTIONS] local remote

Options:
  --version             show program's version number and exit
  --help                show this help message and exit
  -h HOST_FILE, --hosts=HOST_FILE
                        hosts file (each line "[user@]host[:port]")
  -H HOST_STRING, --host=HOST_STRING
                        additional host entries ("[user@]host[:port]")
  -l USER, --user=USER  username (OPTIONAL)
  -p PAR, --par=PAR     max number of parallel threads (OPTIONAL)
  -o OUTDIR, --outdir=OUTDIR
                        output directory for stdout files (OPTIONAL)
  -e ERRDIR, --errdir=ERRDIR
                        output directory for stderr files (OPTIONAL)
  -t TIMEOUT, --timeout=TIMEOUT
                        timeout (secs) (0 = no timeout) per host (OPTIONAL)
  -O OPTION, --option=OPTION
                        SSH option (OPTIONAL)
  -v, --verbose         turn on warning and diagnostic messages (OPTIONAL)
  -A, --askpass         Ask for a password (OPTIONAL)
  -x ARGS, --extra-args=ARGS
                        Extra command-line arguments, with processing for
                        spaces, quotes, and backslashes
  -X ARG, --extra-arg=ARG
                        Extra command-line argument
  -r, --recursive       recusively copy directories (OPTIONAL)

Example: pscp -h hosts.txt -l irb2 foo.txt /home/irb2/foo.txt

示例(针对您的情况):

[feddy@localhost ~]$ touch ko001 ko002 ko003
[feddy@localhost ~]$ pscp.pssh -AH feddy@localhost ko00* Downloads/
Warning: do not enter your password if anyone else has superuser privileges or access to your account.
Password:
[1] 20:26:42 [SUCCESS] feddy@localhost
[feddy@localhost ~]$ ls Downloads/
ko001   ko002   ko003

现在,最后,您可以使用catfind实用程序来合并或重新组合所有文件(如上所述)

相关内容