我有成千上万的.xyz文件,这些文件就像这样的化学坐标(例如):
void
我经常搜索一个简单的命令,比如sed或head和tail,在文件顶部写入计算的行数(在换行符之前使用换行符\ n并且在总数之前有两个空格)但是不能成功。 我真的很感激任何帮助。 输出mst是这样的:
Fe 0.000000000 0.000000000 0.000000000
C 2.112450000 0.000000000 0.000000000
C 0.039817193 1.817419422 0.000000000
答案 0 :(得分:1)
您可以将其作为复合命令执行:
(wc -l < fileA && cat fileA) > outputA
请注意,我在那里使用<
以确保wc
不会在第一行打印文件名。至少在Mac OS上,如果您不使用这样的重定向,它就会这样做。
编辑:如果您需要将相同的内容应用于多个文件:
mkdir output
ls *.xyz | while read filename; do
(wc -l < $filename && cat $filename) > output/$filename
done
只是为了好玩,这是一个你应该不使用的命令,但在某些情况下有效:
tee xxx < fileA | wc -l > xxx # don't do this
答案 1 :(得分:1)
试试这个:
sed '1i \
'$(wc -l < file.xyz) file.xyz
使用find
处理多个文件并使用-i
标记编辑到位文件:
find . -name '*.xyz' -exec sh -c 'sed -i "1s/.*/$(wc -l < {})\n&/" {}' \;
NB:由于使用此命令将对文件进行编辑,您可能需要先检查输出。为此,请在-i
之后删除sed
标记。如果命令符合您的需要,则再次添加-i
标志。