linux – 合并多个文件的更快捷方式
发布时间:2020-12-14 01:25:48 所属栏目:Linux 来源:网络整理
导读:我在 Linux中有多个小文件(大约70,000个文件),我想在文件的每一行的末尾添加一个单词,然后将它们全部合并到一个文件中. 我正在使用这个脚本: for fn in *.sms.txt do sed 's/$/'$fn'/' $fn sms.txt rm -f $fndone 有更快的方法吗? 解决方法 我试过这些文件
我在
Linux中有多个小文件(大约70,000个文件),我想在文件的每一行的末尾添加一个单词,然后将它们全部合并到一个文件中.
我正在使用这个脚本: for fn in *.sms.txt do sed 's/$/'$fn'/' $fn >> sms.txt rm -f $fn done 有更快的方法吗? 解决方法
我试过这些文件:
for ((i=1;i<70000;++i)); do printf -v fn 'file%.5d.sms.txt' $i; echo -e "HAHAnLOLnBye" > "$fn"; done 我尝试了大约4分钟(真实)处理的解决方案.您的解决方案的问题在于您要求sed 70000次!分叉很慢. #!/bin/bash filename="sms.txt" # Create file "$filename" or empty it if it already existed > "$filename" # Start editing with ed,the standard text editor ed -s "$filename" < <( # Go into insert mode: echo i # Loop through files for fn in *.sms.txt; do # Loop through lines of file "$fn" while read l; do # Insert line "$l" with "$fn" appended to echo "$l$fn" done < "$fn" done # Tell ed to quit insert mode (.),to save (w) and quit (q) echo -e ".nwq" ) 这个解决方案花了大约6秒 别忘了,ed是标准的文本编辑器,不要忽略它!如果你喜欢ed,你可能也会喜欢前! 干杯! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |