linux修改文件ctime_linux-find

21f4da6fbddb9deeb81fd1df5b3addf6.png

findlinux 里面一个非常常用且非常强大的命令了,学会了 find,你对 linux 的哲学——“一切皆文件”了解会更深入。

顺便说下,面试问到 linux,几乎都会问 find

功能

按照目录层级搜寻文件。find 的工作原理,是按照目录树来搜寻文件名。

需要注意的是,find 的参数很多,所以我会汇总各种参数风格放进来。

下面的例子,目录结构是这样的

 A
 |-- B
 |   |-- C
 |   |   |-- D
 |   |   `-- d
 |   `-- c
 `-- b

ABCD都是目录,bcd都是文件

常用参数

-depth

# 参照
$ find A/
A/
A/B
A/B/C
A/B/C/D
A/B/C/d
A/B/c
A/b
# 本命令
$ find A/ -depth
A/B/C/D
A/B/C/d
A/B/C
A/B/c
A/B
A/b
A/

搜寻文件时,先处理目录下的文件,再处理目录。可以看到,没使用这个参数之前,find 会首先处理并打印出目录,然后再从深到浅打印出文件。使用后,则会从深到浅处理所有内容。

-maxdepth
-mindepth

# 举例
$ find A/ -maxdepth 3 -mindepth 2 -depth
A/B/C/D
A/B/C/d
A/B/C
A/B/c

搜寻文件时,指定最深层级和最浅层级

+n: >n
-n: <n
n: =n

这个参数很有意思,当我们对目标文件的属性有特殊要求时,可能会用这个参数配合其他的筛选条件使用。比如,当我们查找 7 天内被修改过的文件,可以用 find . -ctime -7

-atime: 访问时间
-ctime: 修改时间
-mtime: 修改属性时间

配合前面的 n 使用,可以按时间筛选文件

-size

# 例子
$ find .  -type f -size +1k
./.bash_history

配合前面的 n 使用,可以按大小筛选文件。而且 n 有单位(附录1),比如例子就是查找大于 1k 的文件

-type

# 例子
$ find .  -type f -size 1c

配合文件类型使用,我们知道,在 linux 中,一切皆文件,我们用“文件种类”来区分目录和普通文件呢。普通文件是 f ,目录是d,文件种类的列表见附录2。

例子就是查找文件大小恰好是1字节普通文件

-user 
-group

按照用户和用户来查找文件

-name

# 例子
$ find .  -type f -name '12*'

按照文件名来查找,支持基础的正则。需要带上单引号,防止出现多文件问题。


前面说的都只是查找文件,find其实也可以针对查找的结果执行一些命令,这种参数我叫它“可执行参数”(自己起的)

特别注意,务必先验证一下你的find语句,然后再用可执行参数!

-delete

# 例子
$ find .  -type f -size -1c -name 123 -delete

这个参数,就是查找并删除文件名是123,文件大小恰好1字节普通文件

-exec

# 例子
$ find .  -type f -name '12*' -exec ls -l {} ;

这个参数可以说是非常有用了!

-exec 后面跟的是 command 命令,考虑到不同系统可能对分号有不同的定义,所以以”空格+反斜杠+分号“的形式来作为结束。

{} 则是前面 find 得到的结果。

所以看例子,find . -type f -name '12*' 是搜索名字为12*的普通文件,后面 -exec ls -l {} ; 拆分成 -execls -l {};

这么拆分一下,是不是简单明了?

-ok

# 例子
$ find .  -type f -name '12*' -exec ls -l {} ;

-exec 类似,但是在执行 command 前,会让你确认,所以虽然 -exec 考的多用的也多,我还是更推荐-ok

附录1

-size 的单位

'b'    for 512-byte blocks (this is the default if no suffix is used)
'c'    for bytes
'w'    for two-byte words
'k'    for Kilobytes (units of 1024 bytes)
'M'    for Megabytes (units of 1048576 bytes)
'G'    for Gigabytes (units of 1073741824 bytes)

附录2

文件种类列表

b      block (buffered) special
c      character (unbuffered) special
d      directory
p      named pipe (FIFO)
f      regular file
l      symbolic  link;  this  is never true if the -L option or the -follow option is in effect, unless the sym-bolic link is broken.  If you want to search for symbolic links when -L is in effect, use -xtype.
s      socket
D      door (Solaris)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值