连接磁盘上的文件

连接磁盘上的文件

假设我有几个具有以下命名的文件:

000001
000002
000003
...

这些文件中的每一个都是一个csv文件(可能包含转义字符)。该文件夹总共包含~20GB数据。如何将这些文件拼接成一个最终文件?

如果重要的话我通常使用Zsh.

答案1

cat <->.csv > all.csv

其中<->匹配任何正整数十进制数,将把所有这些(按词法顺序,对于 0 填充数字与数字顺序相同)连接到all.csv.

但这将使磁盘空间增加一倍。如果您不打算保留原始文件,您可以这样做:

for i in <->.csv; do
  cat $i && rm -f $i || break
done > all.csv

答案2

如果您使用重定向,则会将内容追加或覆盖到一个文件。如果您想附加到一个文件,请使用:

cat file.csv file2.csv file3.csv >> all.csv

下一个命令将覆盖 all.csv:

cat file.csv file2.csv file3.csv > all.csv

但是假设您想要将所有 CSV 文件移动到给定目录中的一个 CSV 文件(附加到):

cat *.csv >> all.csv

答案3

为什么要将所有这些文件合并到一个文件中?

  1. 如果你想将它们提供给需要标准输入的程序,你可以这样做:

    cat *.csv | prog
    

    或前面提到的任何其他组合方法。

  2. 如果程序需要一个命名文件作为输入,请执行以下操作:

    mkfifo p
    cat *.csv > p &
    prog p
    
  3. 如果您需要一个文件,因为一个文件更容易备份,那么将所有内容压缩在一起可能会很有用。如果您想读取文件而不解压它们,那么您可以将 tar 文件转换为基于 fusion 的文件系统。

相关内容