linux下如何根据文件大小来清除文件内容

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux下如何根据文件大小来清除文件内容相关的知识,希望对你有一定的参考价值。

LINUX下有文件ss.log,该文件不断的在自动写,我希望当改文件大于100M时候就使用:>ss.log来清空文件内容,这个要怎么来写?
能否这样?(另其他回答我不是要删除文件,而是要清除内容)
size=`du ss.log|awk print $1`
if [ $size -gt 100000] then
echo " The file more than 100M,Do you want to truncate fire? Please answer yes or no."
read YES_OR_NO
if [ "$YES_OR_NO" = "yes" ]; then
`:>ss.log`
elif [ "$YES_OR_NO" = "no" ]; then
'tail -f ss.log'
else
echo "Sorry, $YES_OR_NO not recognized. Enter yes or no."
exit 1
done
fi

参考技术A 比如删除大于1000K的文件, find ./ -size +1000k -exec rm \;删除当前目录及其子目录的大于1000K的文件.其他类似.可以用man查一下,用man find |ps2pdf -d ->find.pdf 把man出来的页面转化为PDF,方便查看.find确实是个强大的工具. 参考技术B 重定向吧~ 貌似Linux没有获取文件大小的函数吧,不太清楚
system("ls -l ss.log > file");
把文件的信息重定向到一个文件,然后读该文件, 解析第5个字符串就知道文件的大小了~
超过100*1024*1024就system("rm ss.log");
参考技术C size=`du ss.log|awk print $1`
if [ $size -gt 100000 ]
do
`>ss.log`
done
fi本回答被提问者采纳

Linux下查看文件内容的命令

Linux下查看文件内容的命令

查看文件内容的命令:

cat     由第一行开始显示内容,并将所有内容输出

tac     从最后一行倒序显示内容,并将所有内容输出

more    根据窗口大小,一页一页的现实文件内容

less    和more类似,但其优点可以往前翻页,而且进行可以搜索字符

head    只显示头几行

tail    只显示最后几行

nl      类似于cat -n,显示时输出行号

tailf   类似于tail -f 

1.cat 与 tac

cat的功能是将文件从第一行开始连续的将内容输出在屏幕上。但是cat并不常用,原因是当文件大,行数比较多时,屏幕无法全部容下时,只能看到一部分内容。

cat语法:cat [-n]  文件名 (-n : 显示时,连行号一起输出)

 

tac的功能是将文件从最后一行开始倒过来将内容数据输出到屏幕上。我们可以发现,tac实际上是cat反过来写。这个命令也不常用。

tac语法:tac 文件名。

 

2.more和less(常用)

more的功能是将文件从第一行开始,根据输出窗口的大小,适当的输出文件内容。当一页无法全部输出时,可以用“回车键”向下翻行,用“空格键”向下翻页。退出查看页面,请按“q”键。另外,more还可以配合管道符“|”(pipe)使用,例如:ls -al | more

more的语法:more 文件名

Enter 向下n行,需要定义,默认为1行; 

Ctrl f 向下滚动一屏; 

空格键 向下滚动一屏; 

Ctrl b 返回上一屏; 

= 输出当前行的行号; 

:f 输出文件名和当前行的行号; 

v 调用vi编辑器; 

! 命令 调用Shell,并执行命令; 

q 退出more

 

less的功能和more相似,但是使用more无法向前翻页,只能向后翻。

less可以使用【pageup】和【pagedown】键进行前翻页和后翻页,这样看起来更方便。

less的语法:less 文件名

less还有一个功能,可以在文件中进行搜索你想找的内容,假设你想在passwd文件中查找有没有weblogic字符串,那么你可以这样来做:

[[email protected] etc]# less passwd

然后输入:

/weblogic

回车

此时如果有weblogic字符串,linux会把该字符已高亮方式显示。

退出查看页面,请按“q”键。

 

3.head和tail

head和tail通常使用在只需要读取文件的前几行或者后几行的情况下使用。head的功能是显示文件的前几行内容

head的语法:head [n number] 文件名 (number 显示行数)

 

tail的功能恰好和head相反,只显示最后几行内容

tail的语法:tail [-n number] 文件名

 

4.nl

nl的功能和cat -n一样,同样是从第一行输出全部内容,并且把行号显示出来

nl的语法:nl 文件名

 

5.tailf

 

 tailf命令几乎等同于tail -f,严格说来应该与tail --follow=name更相似些。当文件改名之后它也能继续跟踪,特别适合于日志文件的跟踪(follow the growth of a log file)。与tail -f不同的是,如果文件不增长,它不会去访问磁盘文件(It is similar to tail -f but does not access the file when it is not growing.  This has the side effect of not updating the access  time for the file, so a filesystem flush does not occur periodically when no log activity is happening.)。tailf特别适合那些便携机上跟踪日志文件,因为它能省电,因为减少了磁盘访问嘛(tailf  is extremely useful for monitoring log files on a laptop when logging is infrequent and the user desires that the hard disk spin down to conserve battery life.)。tailf命令不是个脚本,而是一个用C代码编译后的二进制执行文件,某些Linux安装之后没有这个命令,本文提供了怎么编译安装tailf命令的方法。

面就谈谈二者的区别:

1. tailf 总是从文件开头一点一点的读, 而tail -f 则是从文件尾部开始读

2. tailf check文件增长时,使用的是文件名, 用stat系统调用;而tail -f 则使用的是已打开的文件描述符; 注:tail 也可以做到类似跟踪文件名的效果; 但是tail总是使用fstat系统调用,而不是stat系统调用;结果就是:默认情况下,当tail的文件被偷偷删除时,tail是不知道的,而tailf是知道的。

 

 常用参数

 

格式:tailf logfile

 

动态跟踪日志文件logfile,最初的时候打印文件的最后10行内容。

以上是关于linux下如何根据文件大小来清除文件内容的主要内容,如果未能解决你的问题,请参考以下文章

Linux下查看文件内容的命令

Linux下查看文件内容的命令

Linux下查看文件内容的命令

NSFileManager计算文件/文件夹大小

Linux下查看文件内容的几种常用命令

linux系统下怎么安装.deb文件