如何将具有相同名称但扩展名不同的不同输入 .txt 和 .tsv 文件(在目录内)合并到输出文件中?
输入:file1.txt
,file2.txt
,file1.tsv
,file2.tsv
输出:file1.merged
,file2.merged
答案1
和zsh
:
ext='(txt|tsv|text|log)'
for f (**/*.$~ext(.)) cat < $f >> $f:t:r.merged
同一目录中的合并顺序将按字母顺序排列。也就是说,a/file.txt
将包含在 beforeb/file.txt
和a/file.log
before 之前a/file.txt
。
另请注意,隐藏文件(名称以 开头的文件.
)不会被考虑(D
如果需要,请添加 glob 限定符)。
答案2
cat file1.* > file1.merged
cat file2.* > file2.merged