暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Linux文件管理之一

oracleace 2022-08-30
492


01

显示文件(ls、stat和file)

ls

ls 命令用于显示指定工作目录中所包含的文件,该命令的使用方法如下:ls [选项] [文件目录列表]

ls 命令中的常用选项:

选项说明
-a列出目录下的所有文件,包括以“.”开头的隐含文件。
-d将目录像文件一样显示,而不是显示其下的文件
-h以人类可识别的方式输出文件大小
-k以 k 字节的形式表示文件的大小
-l列出文件的详细信息
-m横向输出文件名,并以“,”作为分隔符,便于定向到shell命令进行处理
-n用数字的 UID,GID 代替名称
-r录反向排序
-t以时间排序
-R递归的列出所有子目录下的文件
-S以文件大小排序

常用ll代替alias ll='ls -l --color=auto'

查询最新的10个文件 $ ls -lrt|tail

查询最大的10个文件 $ ls -lS|head

查询目录,不显示下面的文件$ ls -ld pictures/

文件类型的字符表示文件的权限,权限由三个字符串组成,这三个字符串分别表示:该文件所有者的权限、组中其他人的权限和系统中其他人的权限;每个字符串又由三个字符组成,依次表示对文件的读(用字符r表示)、写(用字符W表示)和执行权限(用字符x表示)。当用户没有相应的权限时,该权限的对应位置用短线“-”来表示。

例如drwxr-x---
表示的含义是:

  • d 表示该文件是目录;

  • 目录拥有者的权限是rwx(表示有读、写和执行权限);

  • 组中其他人对该目录的权限是r-x(表示有读和执行权限,没有写权限);

  • 系统中其他人对该目录的权限是-(表示读、写和执行权限都没有)。

stat

在 Linux 中,文件有访问时间、数据修改时间、状态修改时间这三个时间,而没有创建时间。stat 是査看文件详细信息的命令,而且可以看到文件的这三个时间。

    oracle@yaoyuan ~$ touch a
    oracle@yaoyuan ~$ stat a
    File: ‘a’
    Size: 0 Blocks: 0 IO Block: 4096 regular empty file
    Device: fc02h/64514d Inode: 17253 Links: 1
    Access: (0644/-rw-r--r--) Uid: (54321/ oracle) Gid: (54321/oinstall)
    Context: unconfined_u:object_r:user_home_t:s0
    Access: 2022-07-28 15:29:33.893889798 +0800
    Modify: 2022-07-28 15:29:33.893889798 +0800
    Change: 2022-07-28 15:29:33.893889798 +0800
    Birth: -
    oracle@yaoyuan ~$ cat a
    oracle@yaoyuan ~$ stat a
    File: ‘a’
    Size: 0 Blocks: 0 IO Block: 4096 regular empty file
    Device: fc02h/64514d Inode: 17253 Links: 1
    Access: (0644/-rw-r--r--) Uid: (54321/ oracle) Gid: (54321/oinstall)
    Context: unconfined_u:object_r:user_home_t:s0
    Access: 2022-07-28 15:29:45.396888989 +0800
    Modify: 2022-07-28 15:29:33.893889798 +0800
    Change: 2022-07-28 15:29:33.893889798 +0800
    Birth: -

    可以看到access的时间变了,其它的时间都没有变。

    file

    file查看文件的类型


      oracle@yaoyuan ~$ file var/log/mysqld.log 
      /var/log/mysqld.log: regular file, no read permission
      oracle@yaoyuan ~$ file a
      a: empty
      oracle@yaoyuan ~$ file bin/ls
      /bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=aaf05615b6c91d3cbb076af81aeff531c5d7dfd9, stripped


      02

      查找文件(find)


      find 命令的基本结构如下:find [paths] [expression] [actions]

      find 命令中的 -name
      选项可以根据文件名称进行检索(区分大小写)。如需要忽略文件名中的大小写,可以使用 -iname
      选项,i应该是ignore的意思。

      • ?
        可以表示任意一个单一的符号

      • *
        可以表示任意数量(包括 0)的未知符号

        删除/tmp目录下的以 .txt
        结尾的文件

      $ mkdir -p tmp/dir1/dir2
      $ touch tmp/dir1/dir2/aa.txt
      $ find tmp -name '*.txt'
      $ find tmp -name '*.txt' -delete

      使用 -type
      选项指定文件类型。-type
      选项最常用的参数如下:

      • f: 文件

      • d: 目录

      • l: 符号链接

      find /usr -type d -name 'python*'
      检索 /usr 下所有文件名以 python
      开头的目录

      根据时间日期进行检索

      有些时候,需要根据文件创建或修改的时间进行检索。Linux 系统中,与文件相关联的时间参数有以下三种:

      • 修改时间(Modification time):最后一次文件内容有过更改的时间点

      • 访问时间(Access time):最后一次文件有被读取过的时间点

      • 变更时间(Change time):最后一次文件有被变更过的时间点(如内容被修改,或权限等 metadata 被修改)

      与此对应的是 find 命令中的 -mtime
      -atime
      -ctime
      三个选项。

      这三个选项的使用遵循以下示例中的规则:

      • -mtime 2
        :该文件 2 天前被修改过

      • -mtime -2
        :该文件 2 天以内被修改过

      • -mtime +2
        :该文件距离上次修改已经超过 2 天时间

      find /u01 -type f -mtime 2
      检索 /u01 下两天前被修改过的文件

      如果觉得 -mtime 等选项以天为单位时间有点长,还可以使用 -mmin,-amin,-cmin 三个选项:find /usr -type f -mtime +50 -mtime -100 检索 /usr 下 50 到 100 天之间修改过的文件 find /usr -type f -mtime 2 -amin 5 检索 /usr 下两天前被修改过且 5 分钟前又读取过的文件

      find /u01/app/oracle/diag/rdbms -mmin -10 -type f   10分钟内被修改过的Oracle跟踪文件。

      find /u01/app/oracle/diag/rdbms -mmin -10 -type f  -delete  删除这些文件

      find . -atime +30 -exec rm -rf {} ;   删除30天没有访问的文件

      根据文件大小检索

      -size
      选项允许用户通过文件大小进行搜索(只适用于文件,目录没有大小……)。

      表示文件大小的单位由以下字符组成:

      • c
        :字节

      • k
        :Kb

      • M
        :Mb

      • G
        :Gb

      另外,还可以使用 +
      -
      符号表示大于小于当前条件。find /u01 -size +1G 检索文件大小高于 1 GB 的文件。加上-delete可以删除大文件,常用与硬盘空间满时候。


      作者介绍:

      姚远:Oracle ACE(Oracle和MySQL数据库方向),华为云MVP。拥有包括 Oracle 10g和12c OCM在内的20+数据库相关认证。曾任IBM公司数据库部门经理,现在一家第三方公司任首席数据库专家,服务2万+客户,《MySQL 8.0运维与优化》的作者。


      需要全套《Linux系统管理》pdf文档请加姚远老师微信👇

      近期热文


      MySQL 8.0 25

      BMySQL程。

      文章转载自oracleace,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

      评论