我在目录中有许多文件。我想通过目录,并将每个文件的最后一行放到一个新文件中。 IE中,这个新文件应该包含目录中每个文件的最后一行。我试过使用将多个文件的最后一行复制到一个文件中
tail -n 1 | cat > newfile.txt
但是在每行之间插入了源文件名。我也尝试编写一个shell脚本,但它唯一成功的是创建目标文件,然后无限期地运行而不添加数据。什么是正确的方法来做到这一点?任何帮助深表感谢。
我在目录中有许多文件。我想通过目录,并将每个文件的最后一行放到一个新文件中。 IE中,这个新文件应该包含目录中每个文件的最后一行。我试过使用将多个文件的最后一行复制到一个文件中
tail -n 1 | cat > newfile.txt
但是在每行之间插入了源文件名。我也尝试编写一个shell脚本,但它唯一成功的是创建目标文件,然后无限期地运行而不添加数据。什么是正确的方法来做到这一点?任何帮助深表感谢。
至少coreutils
tail
有-q
标志,不输出头,所以一个简单:
tail -q -n1 * > OUTFILE
会工作。
使用find
:
find . -type f -exec tail -n1 {} >> newfile.txt \;
或者,如果你不想遍历子目录:
find . -depth 1 -type f -exec tail -n1 {} >> newfile.txt \;
find
作品,而是一个for循环也适用,如果你在SH/bash中/ KSH/zsh的是。
for filename in *; do
tail -n 1 "$filename" >> /path/to/newfile.txt
done
注意,你可能有这种古怪的结果,如果newfile.txt
是,你在*
运行你的for循环的相同目录。