Answers:
这会将输出追加到all.txt
cat *.txt >> all.txt
这将覆盖all.txt
cat *.txt > all.txt
echo *.txt | xargs cat > all.txt
请注意,因为这些方法都无法处理大量文件。我个人使用以下行:
for i in $(ls | grep ".txt");do cat $i >> output.txt;done
编辑:正如某人在评论中所说,您可以替换$(ls | grep ".txt")
为$(ls *.txt)
编辑:感谢@gnourf_gnourf专业知识,使用glob是遍历目录中文件的正确方法。因此,$(ls | grep ".txt")
必须将亵渎性的表达式替换为*.txt
(请参阅此处的文章)。
好的解决方案
for i in *.txt;do cat $i >> output.txt;done
for i in $(ls *.txt);do cat $i >> output.txt;done
呢?
ls *.txt
如果文件太多(参数列表过长的错误),是否会失败?
使用shell最实用的方法是cat命令。其他方式包括
awk '1' *.txt > all.txt
perl -ne 'print;' *.txt > all.txt
cat
方法将相邻文件的最后一行和第一行连接起来。
这种方法怎么样?
find . -type f -name '*.txt' -exec cat {} + >> output.txt
-maxdepth 1
到find
命令中。
sort -u --output="$OUTPUT_FILE" --files0-from=- < <(find "$DIRECTORY_NAME" -maxdepth 1 -type f -name '*.txt' -print0)
type [source folder]\*.[File extension] > [destination folder]\[file name].[File extension]
例如:
type C:\*.txt > C:\1\all.txt
这样将把所有txt文件保存在C:\文件夹中,并以all.txt的名称保存在C:\ 1文件夹中。
要么
type [source folder]\* > [destination folder]\[file name].[File extension]
例如:
type C:\* > C:\1\all.txt
这将获取文件夹中存在的所有文件,并将内容放在C:\ 1 \ all.txt中
当您遇到将all.txt转换为all.txt的问题时,可以尝试检查all.txt是否存在,如果存在,请删除
像这样:
[ -e $"all.txt" ] && rm $"all.txt"
cat *.txt > all.txt
>
命令覆盖all.txt(如果存在),>>
将数据添加到现有文件中
所有这些都是令人讨厌的...
ls | grep *.txt | while read file; do cat $file >> ./output.txt; done;
简单的东西。
find . -iname "*.txt" -maxdepth 1 -exec cat {} >> out.txt \;