cod*_*boy 22 command-line directory xargs files cat
我在一个目录中有 1000 个 csv 文件。我想按顺序将它们连接在一起。它们被命名为 img_size_1.csv 到大约 img_size_1000.csv 这个答案很接近但假设一个列表文件。这可以在单线中完成吗?
ter*_*don 31
是的,它可以,使用毫无想象力的cat命令:
$ cat *csv > all.csv
Run Code Online (Sandbox Code Playgroud)
cat做它在瓶子上所说的,它连接它的输入并打印到标准输出。如果all.csv目标目录中已存在名为的文件,则上述命令将给出错误:
$ cat *csv > all.csv
cat: all.csv: input file is output file
Run Code Online (Sandbox Code Playgroud)
您可以放心地忽略该错误,其内容显然,在某些系统上(例如,根据此答案下面的评论,OSX),您不能忽略该错误,这将进入一个循环,all.csv将被覆盖。all.csv回到自身直到您用完磁盘空间。如果是这样,请all.csv在运行命令之前删除(如果存在)。
ls -1 *.csv | while read fn ; do cat "$fn" >> output.csv.file; done
Run Code Online (Sandbox Code Playgroud)
如果要按字母顺序连接它们:
ls -1 *.csv | sort | while read fn ; do cat "$fn" >> output.csv.file; done
Run Code Online (Sandbox Code Playgroud)
如果要按时间创建顺序连接它们:
ls -1t *.csv | while read fn ; do cat "$fn" >> output.csv.file; done
Run Code Online (Sandbox Code Playgroud)