将多个文件合并为一个包括文件名
Combine multiple files into one including the file name
我一直在四处寻找,试图将多个文本文件组合成包含文件名的文件。
我当前的文件内容是:
1111,2222,3333,4444
我追求的是:
File1,1111,2222,3333,4444
File1,1111,2222,3333,4445
File1,1111,2222,3333,4446
File1,1111,2222,3333,4447
File2,1111,2222,3333,114444
File2,1111,2222,3333,114445
File2,1111,2222,3333,114446
我找到了多个如何组合它们的示例,但没有找到任何组合它们的例子,包括文件名。
假设您的所有文件都具有 .txt
扩展名并且仅包含示例中的一行,您可以使用以下代码:
for f in *.txt; do echo "$f,$(cat "$f")"; done > output.log
其中 output.log
是输出文件。
能否请您尝试以下。考虑到您的 Input_file 扩展名是 .csv
.
awk 'BEGIN{OFS=","} {print FILENAME,[=10=]}' *.csv > output_file
在看到 OP 的评论后如果文件扩展名是 .txt
然后尝试:
awk 'BEGIN{OFS=","} {print FILENAME,[=11=]}' *.txt > output_file
嗯,它有效:
printf "%s\n" *.txt |
xargs -n1 -d $'\n' bash -c 'xargs -n1 -d $'\''\n'\'' printf "%s,%s\n" "" <""' --
- 首先输出一个换行符分隔的文件列表。
- 然后对每个文件
xargs
执行sh
- 在sh里面对文件的每一行执行
xargs
- 并为每行输入
执行printf "%s,%s\n" <filename>
测试于 repl。
使用 grep "" *.txt -I > $filename
解决。
我一直在四处寻找,试图将多个文本文件组合成包含文件名的文件。
我当前的文件内容是:
1111,2222,3333,4444
我追求的是:
File1,1111,2222,3333,4444
File1,1111,2222,3333,4445
File1,1111,2222,3333,4446
File1,1111,2222,3333,4447
File2,1111,2222,3333,114444
File2,1111,2222,3333,114445
File2,1111,2222,3333,114446
我找到了多个如何组合它们的示例,但没有找到任何组合它们的例子,包括文件名。
假设您的所有文件都具有 .txt
扩展名并且仅包含示例中的一行,您可以使用以下代码:
for f in *.txt; do echo "$f,$(cat "$f")"; done > output.log
其中 output.log
是输出文件。
能否请您尝试以下。考虑到您的 Input_file 扩展名是 .csv
.
awk 'BEGIN{OFS=","} {print FILENAME,[=10=]}' *.csv > output_file
在看到 OP 的评论后如果文件扩展名是 .txt
然后尝试:
awk 'BEGIN{OFS=","} {print FILENAME,[=11=]}' *.txt > output_file
嗯,它有效:
printf "%s\n" *.txt |
xargs -n1 -d $'\n' bash -c 'xargs -n1 -d $'\''\n'\'' printf "%s,%s\n" "" <""' --
- 首先输出一个换行符分隔的文件列表。
- 然后对每个文件
xargs
执行sh
- 在sh里面对文件的每一行执行
xargs
- 并为每行输入 执行
printf "%s,%s\n" <filename>
- 在sh里面对文件的每一行执行
测试于 repl。
使用 grep "" *.txt -I > $filename
解决。