Linux 检查文件与比较两个文件(非常详细)

linux中如何去检查文件 ,看文件是否存在呢?

今天我们用到命令是test命令,这个命令最关键的作用就是用来检查/比较文件

目录

关于test参数总览:

详细演示:

1.检查文件是否存在且为目录

2.检查文件是否存在  (可以判断文件与目录是否存在   #存在为零  不存在非零)

 3.检查文件是否存在并且为文件  

4.检查 文件是否存在且为可读

5.查看文件是否存在且为可写

6.查看文件是否存在且为可执行 #可以判断命令

7. 检查文件是否存在 且不为空  #重点

 8.检查文件是否存在并且被当前用户拥有

 9.检查文件是否存在并且默认组为当前用户组

10.检查 文件1 是否比 文件2 新  #这里对比的两个日期

11.检查 文件1  是否比 文件2 旧 #对比的日期新旧

 12.检查 文件1 是否与 文件2 相同  是按i节点判断

13.检查 文件1 是否与 文件2 相同  是按i节点判断

拓展:


关于test参数总览:

-d #检查文件是否存在且为目录

-e #检查文件是否存在

-f #检查文件是否存在且为文件

-r #检查文件是否存在且为可读

-w #检查文件是否可写

-x #检查文件是否存在且可执行

-s #检查文件是否存且不为空

-O #检查文件是否存在并且被当前用户拥有

-G #检查文件是否存在并且默认组为当前用户组

file1 -nt file2  #检查 文件1 是否比 文件2 新 

file1 -ot file2 #检查 文件1  是否比 文件2 旧

file1 -ef file2 #检查 文件1 是否与 文件2 相同  是按i节点判断

详细演示:

## echo $? #返回上一条执行后的结果是否成功

如果返回值是零,就是执行成功;非零失败

“;”分号用法方式:  命令1 ; 命令2 用“;”号隔开每个命令, 每个命令按照从左到右的顺序,顺序执行, 彼此之间不关心是否失败, 所有命令都会执行。

1.检查文件是否存在且为目录

写法: 

#判断一个文件是否存在并且为目录
test -d /shell ; echo $?   #这里我shell那个目录已经建立好了,如果没有返回的值就是非零的数

运行结果:

 结果为0 说明文件存在并且为目录  如果是非目录则会返回的值为非零

2.检查文件是否存在  (可以判断文件与目录是否存在   #存在为零  不存在非零)

写法: 

test -e /shell/ ;echo $?  #判断目录是否存在
test -e /shell/1.txt  ;echo $? #判断文件是否存在

运行结果:

 返回的结果为0表示存在

 3.检查文件是否存在并且为文件  

写法:

test -f /shell/1.txt ; echo $? #判断文件是否存在 并且为文件

运行结果:

 零成功 ,非零失败

4.检查 文件是否存在且为可读

## ls -l 与 ll 是可以查看文件权限的,那么不用这两个命令的话 我们怎么去鉴别一个文件我是否有可读的权限呢?并且文件存在呢?

当前我的操作全是在root权限下进行所以我们先切换到普通用户去打一下命令

写法:

test -r /shell ; echo $? #判断文件是否为当前用户 可读 

 运行结果:

看到结果为非零,当前用户不可读

5.查看文件是否存在且为可写

写法:

test -w /shell ; echo $? #查看文件或目录 在当前用户下是否可写

 运行结果: #当前我在普通用户下 没有写的权限

6.查看文件是否存在且为可执行 #可以判断命令

写法:

test -x /shell ; echo $? #判断文件或目录是否存在并且为可执行

 运行结果:

 判断命令:

7. 检查文件是否存在 且不为空  #重点

写法:

test -s /shell/1.txt ;echo $? #判断1.txt文件内是否有内容

运行结果:

结果可以看到 1.txt文件内是没有内容的 /shell目录下面是有内容的 ##这里注意 如果你 直接 echo > /shell/1.txt 返回的结果为0 因为echo是将一个空值输入到了1.txt文件内 所以 判断文件内是存在内容的

 8.检查文件是否存在并且被当前用户拥有

写法:

test -O /shell ; ehco $?  #检查文件/目录是否存在并且被当前用户拥有

 运行结果

我用root权限创建的所以 可以判断是否是当前用户创建的  如果没有权限是无法修改文化或者目录的属主属组的,如果更改为当前用户的话 返回的结果就是0

 9.检查文件是否存在并且默认组为当前用户组

 写法:

test -G /shell ; echo $? #检查当前文件或者目录是否为当前用的组所拥有

运行结果:

与第8个意思一致

10.检查 文件1 是否比 文件2 新  #这里对比的两个日期

写法:

test 1.txt -nt 2.txt ; echo $? #判断1.txt是否比2.txt新

运行结果:

 

11.检查 文件1  是否比 文件2 旧 #对比的日期新旧

写法:

test 1.txt -ot 2.txt ; echo $? #判断1.txt是否比2.txt旧

 运行结果:

 12.检查 文件1 是否与 文件2 相同  是按i节点判断

写法:

test 1.txt -ef 2.txt ; echo $? #判断两个文件是否相同 查看i节点 ls -i + file

运行结果:

13.检查 文件1 是否与 文件2 相同  是按i节点判断

写法

test 1.txt -ef 2.txt ; echo $? #判断两个文件是否相同 是以i节点作为判断的

运行结果:

拓展:

如何查看文件的、权限、最近访问、最近更改、最近改动的时间,可以用stat命令

猜你喜欢

转载自blog.csdn.net/weixin_58279299/article/details/123494619