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