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 aoracle@yaoyuan ~$ stat a File: ‘a’ Size: 0 Blocks: 0 IO Block: 4096 regular empty fileDevice: fc02h/64514d Inode: 17253 Links: 1Access: (0644/-rw-r--r--) Uid: (54321/ oracle) Gid: (54321/oinstall)Context: unconfined_u:object_r:user_home_t:s0Access: 2022-07-28 15:29:33.893889798 +0800Modify: 2022-07-28 15:29:33.893889798 +0800Change: 2022-07-28 15:29:33.893889798 +0800 Birth: -oracle@yaoyuan ~$ cat aoracle@yaoyuan ~$ stat a File: ‘a’ Size: 0 Blocks: 0 IO Block: 4096 regular empty fileDevice: fc02h/64514d Inode: 17253 Links: 1Access: (0644/-rw-r--r--) Uid: (54321/ oracle) Gid: (54321/oinstall)Context: unconfined_u:object_r:user_home_t:s0Access: 2022-07-28 15:29:45.396888989 +0800Modify: 2022-07-28 15:29:33.893889798 +0800Change: 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 permissionoracle@yaoyuan ~$ file aa: emptyoracle@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
:KbM
:MbG
:Gb
另外,还可以使用 +
或 -
符号表示大于或小于当前条件。find /u01 -size +1G 检索文件大小高于 1 GB 的文件。加上-delete可以删除大文件,常用与硬盘空间满时候。