find命令和stat命令

一.find命令

1.find命令选项

-name 按照文件名查找文件。

-perm 按照文件权限来查找文件。

-prune 使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。

-user 按照文件属主来查找文件。

-group 按照文件所属的组来查找文件。

-mtime -n +n 按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime 选项,但它们都和-m time选项。

-nogroup 查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。

-nouser 查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。

-newer file1 ! file2  查找更改时间比文件file1新但比文件file2旧的文件。

-type 查找某一类型的文件,诸如:b - 块设备文件。d - 目录。c - 字符设备文件。p - 管道文件。l - 符号链接文件。f - 普通文件。

-size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。

-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。

-fstype:查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息。

-mount:在查找文件时不跨越文件系统mount点。

-follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。

-cpio:对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。

另外,下面三个的区别:

-amin n 查找系统中最后N分钟访问的文件

  -atime n 查找系统中最后n*24小时访问的文件

  -cmin n 查找系统中最后N分钟被改变文件状态的文件

  -ctime n 查找系统中最后n*24小时被改变文件状态的文件

 -mmin n 查找系统中最后N分钟被改变文件数据的文件

  -mtime n 查找系统中最后n*24小时被改变文件数据的文件

二、find命令的例子;

1、查找当前用户主目录下的所有文件:下面两种方法都可以使用

$ find $HOME -print

$ find ~ -print

2、让当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件;

$ find . -type f -perm 644 -exec ls -l { } \;

3、为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径;

$ find / -type f -size 0 -exec ls -l { } \;

4、查找/var/logs目录中更改时间在7日以前的普通文件,并在删除之前询问它们;

$ find /var/logs -type f -mtime +7 -ok rm { } \;

5、为了查找系统中所有属于root组的文件;

$find . -group root -exec ls -l { } \;

-rw-r--r-- 1 root root 595 10月 31 01:09 ./fie1

6、find命令将删除当目录中访问时间在7日以来、含有数字后缀的admin.log文件。

该命令只检查三位数字,所以相应文件的后缀不要超过999。先建几个admin.log*的文件 ,才能使用下面这个命令

$ find . -name "admin.log[0-9][0-9][0-9]" -atime -7 -ok

rm { } \;

< rm ... ./admin.log001 > ? n

< rm ... ./admin.log002 > ? n

< rm ... ./admin.log042 > ? n

< rm ... ./admin.log942 > ? n

7、为了查找当前文件系统中的所有目录并排序;

$ find . -type d | sort

8、为了查找系统中所有的rmt磁带设备;

$ find /dev/rmt -print

二.Liunx中用stat命令查看文件时3个时间点解析

有事,我们用stat命令来查看文件的详细信息,如下:

[[email protected] ~]$ stat text.1

File: `text.1‘

Size: 0         Blocks: 0          IO Block: 4096   regular empty file

Device: 802h/2050dInode: 658326      Links: 1

Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

Access: 2016-05-16 04:03:55.110083994 -0700

Modify: 2016-05-09 06:23:19.741054978 -0700

Change: 2016-05-09 06:23:19.741054978 -0700

会出现3个类型的时间,分别是Access,Modify,Change。下面我们就对这3个时间进行详细解释下。

access time:表示我们最后一次访问(仅仅是访问,没有改动)文件的时间

modify time:表示我们最后一次修改文件的时间

change time:表示我们最后一次对文件属性改变的时间,包括权限,大小,属性等等。

3者之间到底有什么区别呢?

1,当我们仅仅只是读取文件时,access time 改变,而modify,change time 不会改变

2,当修改文件时,access,modify,change time 都会跟着改变

3,当修改文件属性时,change time 改变,而access,modify time 不变。

时间: 2024-08-28 00:04:44

find命令和stat命令的相关文章

linux简单命令3---帮助命令

1:帮助命令:man 命令: 2:这个帮助用的比较多(还是中文):命令  --help 3:shell帮助 4:详细命令(比man更详细)帮助,用的少,比较麻烦:info

每天一个命令之wc命令(1)

每天一个命令之wc命令 wc:打印出文件中行,字符和字节的数量 摘要: wc [OPTION]... [FILE]... wc [OPTION]... --files0-from=F 选项:该命令统计指定文件中的字节数.字数.行数,并将统计结果显示输出.如果没有给出文件名,则从标准输入读取. -c 打印出文件的字节数 -m 打印出文件的字符数量 -l 打印出该文件的总行数 -w 打印出单词总数 -L 打印出最长行的长度 例子 [[email protected] shell.sh]# cat w

Linux命令篇之mkdir命令,rmdir命令和rm命令

在 Linux 下用 mkdir 命令来创建目录和子目录 了解了用 ls 命令在目录中列出条目后,现在我们要学习在 Linux 系统下创建目录.在 Linux 下,我们可以使用 mkdir 命令.Mkdir 是"make directory" 的缩写词. mkdir 是什么呢 Mkdir 是一个用来在 Linux 系统下创建目录的命令.此命令属于内建命令. 运行 mkdir 命令 你可以在你的控制台直接键入 mkdir 来使用它. $ mkdir 默认情况下,不带任何参数运行 mkdi

MySQL基础命令和mysqladmin命令的使用

mysql --user, -u --host, -h --password, -p --port --protocol --database DATABASE, -D MySQL的批处理模式 [[email protected] ~]# vim /test.sql create database testdb; create table testdb.tb1 (id INT,name CHAR(20)) [[email protected] ~]# mysql mysql> \. /test.

find 命令和grep命令的区别

对于find命令和grep命令两者之间的区别,大家可以这样记忆. find命令是用来查找文件的,而grep查找的是文件内容. 另外,find是完全匹配(通配符),而grep是包含匹配(正则表达式)

find命令与locate命令的区别

find命令与locate命令都是文件搜索命令,换句话说都是根据文件名搜索文件. find命令格式: find 文件名 locate命令格式:locate 文件名 注意:我们在日常工作中最常用的是locate命令,因为locate命令是在数据库中搜索文件名,效率更高,搜索速度快.而find命令则会检索目录下所有文件,相对耗资源.

linux之cp/scp命令+scp命令详解

linux之cp/scp命令+scp命令详解 名称:cp 使用权限:所有使用者 使用方式: cp [options] source dest cp [options] source... directory 说明:将一个档案拷贝至另一档案,或将数个档案拷贝至另一目录. 把计 -a 尽可能将档案状态.权限等资料都照原状予以复制. -r 若 source 中含有目录名,则将目录下之档案亦皆依序拷贝至目的地. -f 若目的地已经有相同档名的档案存在,则在复制前先予以删除再行复制. 范例: 将档案 aa

shell内部命令和外部命令

区别: 内部命令:内部命令被构建在shell之中.当执行shell命令时,内部命令的执行速度非常快.这是因为没有其他的进程因为执行这条命令而被创建.比如说,当我们执行"cd"命令时,没有进程被创建.在执行过程中只是简单的改变当前的目录. 外部命令:外部命令并没有被构建在shell中.这些可执行的外部命令保存在一个独立的文件当中.当一个外部命令被执行时,一个新的进程即被创建同时命令被执行.比如说,当我们执行"ls"(通常被保存在/bin 目录下)命令时,然后/usr/

shell的内部命令和外部命令

shell命令分成内置命令和外部命令. 内置命令(builtin command) 是shell解释程序内建的,有shell直接执行,不需要派生新的进程.有一些内部命令可以用来改变当前的shell环境. 常见的内部命令有:.(点命令).bg.cd.continue.echo.exec.exit.export.fg.jobs.pwd.read.return.set.shift.test.times.trap.umask.unset和wait. 外部命令(external command) 又分两种

【每日一linux命令5】命令的结合与定向

命令中除了一般命令外,还有管道(或称途径)(|)与定向(>或>>). 管道(途径)的用法: "命令一[选项]"|"命令二[选项]",也就是将"命令一[选项]"的输出结果传到"命令二[选项]",通过命令二的处理之后才输出到标准输出(屏幕)上.比如"ls /etc"会列出etc下的所有文件,若加上"| less",也就是"ls /etc | less",