linux过滤空文件的命令总结

在linux中有经常做文件的操作,今天有个同事在生产环境统计数据,发现有很多日志文件都是空的,文件太多了,他想查看一下有哪些文件不是空文件。

而且还不想使用脚本,就想用一个命令来搞定,确实够懒的一个人。

简单模拟了下。我只想查看e.lst 因为它的大小不是空的。

DUM1102 /oravl01/oracle> ll *.lst  -rw-r--r-- 1 oracle dba 0 Jul 21 15:39 a.lst  -rw-r--r-- 1 oracle dba 0 Jul 21 15:39 b.lst  -rw-r--r-- 1 oracle dba 0 Jul 21 15:39 c.lst  -rw-r--r-- 1 oracle dba 0 Jul 21 15:39 d.lst  -rw-r--r-- 1 oracle dba 7 Jul 21 15:39 e.lst 

最精简的命令就是使用grep了。

DUM1102 /oravl01/oracle> ll *.lst|grep -v " 0 "  -rw-r--r-- 1 oracle dba 7 Jul 21 15:39 e.lst  

当然也可以使用awk来完成。

难度再升级一下,新增一个文件 f.lst 现在文件的结构如下:

DUM1102 /oravl01/oracle> ll *.lst  -rw-r--r-- 1 oracle dba 0 Jul 21 15:39 a.lst  -rw-r--r-- 1 oracle dba 0 Jul 21 15:39 b.lst  -rw-r--r-- 1 oracle dba 0 Jul 21 15:39 c.lst  -rw-r--r-- 1 oracle dba 0 Jul 21 15:39 d.lst  -rw-r--r-- 1 oracle dba 7 Jul 21 15:39 e.lst  -rw-r--r-- 1 oracle dba 14 Jul 21 16:35 f.lst 

他现在想查看大小为7字节的文件,使用awk来牛刀小试。

ll *.lst | awk -v file_size=7 '{ if ( $5==file_size ) print $5 " " $9}'  DUM1102 /oravl01/oracle> ll *.lst | awk -v file_size=7 '{ if ( $5==file_size ) print $5 " " $9}'  

7 e.lst

在linux中有经常做文件的操作,今天有个同事在生产环境统计数据,发现有很多日志文件都是空的,文件太多了…

Linux过滤空文件的命令总结

在Linux中有经常做文件的操作,今天有个同事在生产环境统计数据,发现有很多日志文件都是空的,文件太多了,他想查看一下有哪些文件不是空文件。

而且还不想使用脚本,就想用一个命令来搞定,确实够懒的一个人。 简单模拟了下。我只想查看e.lst
因为它的大小不是空的。
 

DUM1102 /oravl01/Oracle> ll *.lst
 -rw-r–r–  1 oracle    dba              0 Jul 21 15:39 a.lst
 -rw-r–r–  1 oracle    dba              0 Jul 21 15:39 b.lst
 -rw-r–r–  1 oracle    dba              0 Jul 21 15:39 c.lst
 -rw-r–r–  1 oracle    dba              0 Jul 21 15:39 d.lst
 -rw-r–r–  1 oracle    dba              7 Jul 21 15:39 e.lst
 
最精简的命令就是使用grep了。
 DUM1102 /oravl01/oracle> ll *.lst|grep -v ” 0 “
 -rw-r–r–  1 oracle    dba              7 Jul 21 15:39 e.lst
 
当然也可以使用awk来完成。
 难度再升级一下,新增一个文件 f.lst 现在文件的结构如下:
 DUM1102 /oravl01/oracle> ll *.lst
 -rw-r–r–  1 oracle    dba              0 Jul 21 15:39 a.lst
 -rw-r–r–  1 oracle    dba              0 Jul 21 15:39 b.lst
 -rw-r–r–  1 oracle    dba              0 Jul 21 15:39 c.lst
 -rw-r–r–  1 oracle    dba              0 Jul 21 15:39 d.lst
 -rw-r–r–  1 oracle    dba              7 Jul 21 15:39 e.lst
 -rw-r–r–  1 oracle    dba            14 Jul 21 16:35 f.lst
 
他现在想查看大小为7字节的文件,使用awk来牛刀小试。
 ll *.lst | awk -v file_size=7 ‘{ if ( $5==file_size ) print $5 ” ”
$9}’
 DUM1102 /oravl01/oracle> ll *.lst | awk -v file_size=7 ‘{ if (
$5==file_size ) print $5 ” ” $9}’     
 7 e.lst

本文永久更新链接地址:

在Linux中有经常做文件的操作,今天有个同事在生产环境统计数据,发现有很多日志文件都是空的,文件太多了…

在Linux中有经常做文件的操作,今天有个同事在生产环境统计数据,发现有很多日志文件都是空的,文件太多了,他想查看一下有哪些文件不是空文件。

head,tail,cat,more,less

在linux下面,有许多命令都可以查看文件的内容,各种命令都有着有不同的用法与特点,可以根据自己的需要选择相应的命令以快速高效的查看文件内容,下面就将linux下查看文件内容的命令做一下总结。

而且还不想使用脚本,就想用一个命令来搞定,确实够懒的一个人。 简单模拟了下。我只想查看e.lst
因为它的大小不是空的。
 

head
  • 图片 1

    image.png

  • 命令演示
    [root@localhost mytest]# head -n 12 passwd.test
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    root:x:0:0:root:/root:/bin/bash
    [root@localhost mytest]# head -12 passwd.test
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    root:x:0:0:root:/root:/bin/bash

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

DUM1102
/oravl01/Oracle> ll
*.lst
 -rw-r–r–  1 oracle    dba              0 Jul 21 15:39 a.lst
 -rw-r–r–  1 oracle    dba              0 Jul 21 15:39 b.lst
 -rw-r–r–  1 oracle    dba              0 Jul 21 15:39 c.lst
 -rw-r–r–  1 oracle    dba              0 Jul 21 15:39 d.lst
 -rw-r–r–  1 oracle    dba              7 Jul 21 15:39 e.lst
 
最精简的命令就是使用grep了。
 DUM1102 /oravl01/oracle> ll *.lst|grep -v ” 0 “
 -rw-r–r–  1 oracle    dba              7 Jul 21 15:39 e.lst
 
当然也可以使用awk来完成。
 难度再升级一下,新增一个文件 f.lst 现在文件的结构如下:
 DUM1102 /oravl01/oracle> ll *.lst
 -rw-r–r–  1 oracle    dba              0 Jul 21 15:39 a.lst
 -rw-r–r–  1 oracle    dba              0 Jul 21 15:39 b.lst
 -rw-r–r–  1 oracle    dba              0 Jul 21 15:39 c.lst
 -rw-r–r–  1 oracle    dba              0 Jul 21 15:39 d.lst
 -rw-r–r–  1 oracle    dba              7 Jul 21 15:39 e.lst
 -rw-r–r–  1 oracle    dba            14 Jul 21 16:35 f.lst
 
他现在想查看大小为7字节的文件,使用awk来牛刀小试。
 ll *.lst | awk -v file_size=7 ‘{ if ( $5==file_size ) print $5 ” ”
$9}’
 DUM1102 /oravl01/oracle> ll *.lst | awk -v file_size=7 ‘{ if (
$5==file_size ) print $5 ” ” $9}’     
 7 e.lst

tail
  • 图片 2

    image.png

  • 命令演示
    [root@localhost mytest]# tail -n 3 passwd.test
    ntp:x:38:38::/etc/ntp:/sbin/nologin
    avahi:x:70:70:Avahi mDNS/DNS-SD
    Stack:/var/run/avahi-daemon:/sbin/nologin
    tcpdump:x:72:72::/:/sbin/nologin
    [root@localhost mytest]#
    [root@localhost mytest]# tail -3 passwd.test
    ntp:x:38:38::/etc/ntp:/sbin/nologin
    avahi:x:70:70:Avahi mDNS/DNS-SD
    Stack:/var/run/avahi-daemon:/sbin/nologin
    tcpdump:x:72:72::/:/sbin/nologin

    • 另开一ssh窗口,对passwd文件进行修改
      [root@localhost mytest]# tty
      /dev/pts/4
      [root@localhost mytest]# echo ‘linux centos fedora suse
      RHEL’ >> passwd
      [root@localhost mytest]# echo ‘linux centos fedora suse
      RHEL’ >> passwd
      [root@localhost mytest]# echo ‘linux centos fedora suse
      RHEL’ >> passwd
      [root@localhost mytest]# echo ‘linux centos fedora suse
      RHEL’ >> passwd
      [root@localhost mytest]# echo ‘linux centos fedora suse
      RHEL’ >> passwd
    • 在第一个ssh窗口,执行查看命令 tail -f
      passwd,不会自动退出文件,可以看到文件内容在增加
      [root@localhost mytest]# tail -f passwd
      3
      4
      5
      6
      7
      8
      9
      10
      11
      linux centos fedora suse RHEL
      linux centos fedora suse RHEL
      linux centos fedora suse RHEL
      linux centos fedora suse RHEL
      linux centos fedora suse RHEL

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

本文永久更新链接地址:http://www.linuxidc.com/Linux/2014-07/104641.htm

cat
  • 图片 3

    image.png

  • 命令演示
    [root@localhost mytest]# cat redhat-release
     
     
     
    CentOS Linux release 7.3.1611 (Core)
     
     
    [root@localhost mytest]# cat version
    Linux version 3.10.0-514.el7.x86_64
    (builder@kbuilder.dev.centos.org)
    (gcc version 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC) ) #1 SMP Tue
    Nov 22 16:42:41 UTC 2016
    [root@localhost mytest]# cat redhat-release version
     
     
     
    CentOS Linux release 7.3.1611 (Core)
     
     
    Linux version 3.10.0-514.el7.x86_64
    (builder@kbuilder.dev.centos.org)
    (gcc version 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC) ) #1 SMP Tue
    Nov 22 16:42:41 UTC 2016
    [root@localhost mytest]# cat > newfile
    my name is zhanmusi
    see you next week
    ^C
    [root@localhost mytest]#
    [root@localhost mytest]# cat newfile
    my name is zhanmusi
    see you next week
    [root@localhost mytest]# cat hebing
    cat: hebing: 没有那个文件或目录
    [root@localhost mytest]# cat redhat-release redhat-release
    newfile > hebing
    [root@localhost mytest]# cat hebing
     
     
     
    CentOS Linux release 7.3.1611 (Core)
     
     
     
     
     
    CentOS Linux release 7.3.1611 (Core)
     
     
    my name is zhanmusi
    see you next week
    [root@localhost mytest]# cat -n hebing
    1
    2
    3
    4 CentOS Linux release 7.3.1611 (Core)
    5
    6
    7
    8
    9
    10 CentOS Linux release 7.3.1611 (Core)
    11
    12
    13 my name is zhanmusi
    14 see you next week
    [root@localhost mytest]# cat -b hebing
     
     
     
    1 CentOS Linux release 7.3.1611 (Core)
     
     
     
     
     
    2 CentOS Linux release 7.3.1611 (Core)
     
     
    3 my name is zhanmusi
    4 see you next week
    [root@localhost mytest]# cat -E hebing
    $
    $
    $
    CentOS Linux release 7.3.1611 (Core)$
    $
    $
    $
    $
    $
    CentOS Linux release 7.3.1611 (Core)$
    $
    $
    my name is zhanmusi$
    see you next week$
    [root@localhost mytest]#

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

图片 4

more
  • 图片 5

    image.png

  • 命令演示
    [root@localhost mytest]# more -15 fstab.test
    1
    2
    3
    4
    5
     
     
     
     
     
    # /etc/fstab
    # Created by anaconda on Tue May 30 06:31:44 2017

# Accessible filesystems, by reference, are maintained under
‘/dev/disk’
–More–(32%)
[root@localhost mytest]# more +5 fstab.test
5

# /etc/fstab
# Created by anaconda on Tue May 30 06:31:44 2017

# Accessible filesystems, by reference, are maintained under
‘/dev/disk’
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more
info
#
/dev/mapper/cl-root / xfs defaults 0 0
UUID=8be7dbe5-dde6-40b0-8900-c30f1007287e /boot xfs defaul
ts 0 0
/dev/mapper/cl-swap swap swap defaults 0 0
[root@localhost mytest]# more -s fstab.test
1
2
3
4
5

# /etc/fstab
# Created by anaconda on Tue May 30 06:31:44 2017

# Accessible filesystems, by reference, are maintained under
‘/dev/disk’
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more
info

/dev/mapper/cl-root / xfs defaults 0 0
UUID=8be7dbe5-dde6-40b0-8900-c30f1007287e /boot xfs defaul
ts 0 0
/dev/mapper/cl-swap swap swap defaults 0 0
[root@localhost mytest]# more +/2017 fstab.test
 
…跳过

# /etc/fstab
# Created by anaconda on Tue May 30 06:31:44 2017
#
# Accessible filesystems, by reference, are maintained under
‘/dev/disk’
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more
info

/dev/mapper/cl-root / xfs defaults 0 0
UUID=8be7dbe5-dde6-40b0-8900-c30f1007287e /boot xfs defaul
ts 0 0
/dev/mapper/cl-swap swap swap defaults 0 0
[root@localhost mytest]# more +/4 fstab.test
 
…跳过
2
3
4
5

# /etc/fstab
# Created by anaconda on Tue May 30 06:31:44 2017

# Accessible filesystems, by reference, are maintained under
‘/dev/disk’
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more
info

/dev/mapper/cl-root / xfs defaults 0 0
UUID=8be7dbe5-dde6-40b0-8900-c30f1007287e /boot xfs defaul
ts 0 0
/dev/mapper/cl-swap swap swap defaults 0 0
[root@localhost mytest]# cat -n fstab.test | more
1 1
2 2
3 3
4 4
5 5
6
7
8
9
10
11 #
12 # /etc/fstab
13 # Created by anaconda on Tue May 30 06:31:44 2017
14 #
15 # Accessible filesystems, by reference, are maintained under
‘/dev/disk’
16 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for
more info
17 #
18 /dev/mapper/cl-root / xfs defaults 0 0
19 UUID=8be7dbe5-dde6-40b0-8900-c30f1007287e /boot xfs defaults 0 0
20 /dev/mapper/cl-swap swap swap defaults 0 0

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

less
  • 图片 6

    image.png

  • 命令演示
    由于more命令查看大文件后,屏幕占用效果不是很好,就不再展示详细执行过程。

head    只显示头几行

tail    只显示最后几行

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

下面将各种命令的用法详细比较一下,如下:

1.cat 命令

cat语法:cat [-n]  文件名

参数说明:-n : 显示时,连行号一起输出

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

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

2.tac 命令

tac语法:tac 文件名

这个命令输出的文件内容和cat输出的内容是完全倒过来的。一般没有变态需求很少用到。

3.more命令

more的语法:

more 文件名

more的功能是将文件从第一行开始,根据输出窗口的大小,适当的输出文件内容。当一页无法全部输出时,可以用”回车键”向下翻3行(我的环境是3行,其他linux版本可能不同),或者使用”空格键”向下翻页。退出查看页面,请按”q”键。这是一个比较常用的命令。

另外,more还可以配合管道符”|”(pipe)使用,例如:ls -al | more

4.less 命令

less的语法:

less 文件名

less的功能和more大同小异,但是使用more无法向前翻页,只能向后翻。less可以使用【pageup】和【pagedown】键进行前翻页和后翻页,这样看起来更方便。

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

[[email protected]
etc]# less passwd

然后输入:

/www.phpernote.com

回车

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

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

5.head 命令

head的语法:

head 【-n number】 文件名

head通常在只需要读取文件的前几行或者后几行的情况下使用。

例如:

[[email protected]
etc]# head -n 5 error.log — 只显示error.log文件的前5行内容

6.tail 命令

tail的语法:

tail [-n number] 文件名

tail的功能恰好和head相反,只显示最后几行内容,用法一样,这里就不举例了。

7.nl 命令

nl的语法:

nl 文件名

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

您可能感兴趣的文章

  • linux查看文件有多少行,linux wc命令详解
  • linux文件内容统计命令 wc命令用法详解
  • linux chmod(文件或文件夹权限设定)命令参数及用法详解
  • linux删除文件,文件夹命令rm 命令详解
  • linux创建文件夹(mkdir)命令详解
  • 禁止网页右键、复制、另存为、查看源文件等功能实现网页源代码保护
  • linux创建文件(touch)命令详解
  • linux系统文件管理学习

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图