这是我想要做的......
我有一堆文本文件需要经过并且只保留前5行。如果我top
然后输出到那里的文件。我需要文件名与之前相同。
例如:file.name
- 前五行(删除第5行下方的所有内容),然后将文件另存为file.name
。有许多文件需要批量完成。
答案 0 :(得分:3)
您可以使用head
执行此操作。
head -n 5 file.name > file.name.tmp && mv file.name.tmp file.name
您可以将其构建为脚本,以便为所有文件执行此操作,并在以后的每次运行中将file.name
作为参数传递。
答案 1 :(得分:2)
假设您正在使用名为“file.name”的文件,基本语法非常简单
head -n5 file.name > temp && cat temp > file.name
或
cat file.name | head -n5 > temp && cat temp > file.name
如果您尝试在路径中的大量文件上执行此操作,则应使用类似
的内容find ./ -type f -printf "%f\n"
您可以根据所需的文件类型修改参数
find ./ -name "*.js" -type f -printf "%f\n"
然后,您可以遍历该列表,将每一行作为参数传递到上面的代码中
它可能看起来像这样(我没有测试过这个,但它类似于我写的另一个小脚本,所以希望它指向正确的方向)
function cutfile {
head -n5 "$1" > temp && cat temp > "$1"
}
find ./ -name "*.js" -type f -printf "%f\n" |\
while read line; do cutfile $line; done
编辑:改头......; cat ...代码基于@ fedorqui关于@ mu代码的建议
编辑:固定代码,添加“;完成”,使代码更具可读性