Unix 下如何将多个文件的内容写入一个文件?

Unix 下如何将多个文件的内容写入一个文件?

假设在一个目录中有一些文件,例如:

file1.txt  
file2.txt
file3.txt
file4
file5
fab
text1 

我需要消除.txt扩展名的文件并附加文件名以以下开头的剩余文件的内容文件( file4, file5) 到单个文件。

我尝试了以下命令,但它将所有 5 个文件内容附加到一个文件中。

ls -ltr file*|grep -vE ".txt" | cat * > final

答案1

如果有的话bash,您可以使用以下内容:

shopt -s extglob
cat !(*.txt) > final

或者使用zsh

setopt extended_glob
cat ^*.txt > final

答案2

寻找 。 ! -名称 '*.txt' | xargs 猫 >> 最终

答案3

尝试这个

#!/bin/bash

find . -name '*.txt' -exec rm {} +

for f in file*
do
    cat $f >> final_file
done

在一行中不删除.txt文件但忽略它们cat

$ find . -name 'file*' ! -name '*.txt' -exec cat {} \; > final

相关内容