0
点赞
收藏
分享

微信扫一扫

linux基本指令二(补充)

大柚子top 2022-03-13 阅读 59

时间日期指令

date 

显示当前时间

效果:2022年 03月 12日 星期六 09:55:21 CST

date +%y--%m--%d--%H:%M:%S

效果:显示当前 年 月 日 时 分 秒

说明只需要一个 + 号就行,中间的 – 和 : 仅仅是作为分隔符,可以去掉。

可以任意组合就像只显示 年月日

date +%y-%m-%d

注意 :时分秒的英文字符一定要大写,不然出错。

设置日期(特权模式下)

date -s "字符串时间"
比如 date -s  "2022-2-2  20:20:20"

查看当前日历

cal

指定年份查看

cal 2022

搜索查找指令

find指令

find命令的格式

find   path  -option  【 -print 】  【 -exec   -ok   |xargs  |grep  】 【  command  {} \;  】

find命令参数

1)path:要查找的目录路径。 


2)print:表示将结果输出到标准输出。会换行
print0 则不换行 

3)exec:对匹配的文件执行该参数所给出的shell命令。 
      形式为command {} \;,注意{}与\;之间有空格 

4)ok:与exec作用相同,
      区别在于,在执行命令之前,都会给出提示,让用户确认是否执行 

5)|xargs  与exec作用相同 ,起承接作用

区别在于 |xargs 主要用于承接删除操作 ,而 -exec 都可用 如复制、移动、重命名等

6)options :表示查找方式

options的参数

-name   filename               #查找名为filename的文件
-perm                                #按执行权限来查找
-user    username             #按文件属主来查找
-group groupname            #按组来查找
-mtime   -n +n                   #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime    -n +n                   #按文件访问时间来查找文件,-n指n天以内,+n指n天以前
-ctime    -n +n                  #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-nogroup                          #查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser                            #查无有效属主的文件,即文件的属主在/etc/passwd中不存
-type    b/d/c/p/l/f             #查是块设备、目录、字符设备、管道、符号链接、普通文件
-size      n[c]                    #查长度为n块[或n字节]的文件
-mount                            #查文件时不跨越文件系统mount点
-follow                            #如果遇到符号链接文件,就跟踪链接所指的文件
-prune                            #忽略某个目录

按文件名查找

find 路径 -name 文件名  

说明:按名字查找支持模糊搜索

在当前目录及子目录中,查找大写字母开头的txt文件 
       $ find . -name '[A-Z]*.txt' -print   

      在/etc及其子目录中,查找host开头的文件 
      $ find /etc -name 'host*' -print   

      在$HOME目录及其子目录中,查找所有文件   
      $ find ~ -name '*' -print 

      在当前目录及子目录中,查找不是out开头的txt文件   
      $ find . -name "out*" -prune -o -name "*.txt" -print
      忽略字符大小写
      find  -iname

路径

  ~ 表示$HOME目录
  . 表示当前目录或者./
  / 表示根目录 
  /* 表示该目录下的所有文件
  ./* 表示当前目录下的所有子目录(文件)
  ‘pwd’ 表示当前目录《并以绝对路径输出》外面需要套一个双引号
   $pwd 表示当前目录 外面不需要套双引号
   
  

按拥有者查找

find 路径 -user 拥有者名  

按大小查找

find 路径 -size 文件大小

文件要等于 指定的文件大小

find 路径 -size +文件大小

文件要大于 指定的文件大小

find 路径 -size -文件大小

文件要小于 指定的文件大小

   查找超过1M的文件 
      $ find / -size +1M -type f -print   

      查找等于6字节的文件 
      $ find . -size 6c -print   

      查找小于32k的文件 
      $ find . -size -32k -print 

按类型查找  (b/d/c/p/l/f )

  在当前目录及子目录下,查找符号链接文件   
      $ find . -type l -print 
普通文件类型
Linux中最多的一种文件类型, 包括 纯文本文件(ASCII);二进制文件(binary);数据格式的文件(data);各种压缩文件.第一个属性为 [-]
目录文件
就是目录, 能用 # cd 命令进入的。第一个属性为 [d],例如 [drwxrwxrwx]
块设备文件
块设备文件 : 就是存储数据以供系统存取的接口设备,简单而言就是硬盘。例如一号硬盘的代码是 /dev/hda1等文件。第一个属性为 [b]
字符设备
字符设备文件:即串行端口的接口设备,例如键盘、鼠标等等。第一个属性为 [c]
套接字文件
这类文件通常用在网络数据连接。可以启动一个程序来监听客户端的要求,客户端就可以通过套接字来进行数据通信。第一个属性为 [s],最常在 /var/run目录中看到这种文件类型
管道文件
FIFO也是一种特殊的文件类型,它主要的目的是,解决多个程序同时存取一个文件所造成的错误。FIFO是first-in-first-out(先进先出)的缩写。第一个属性为 [p]
链接文件
类似Windows下面的快捷方式。第一个属性为 [l],例如 [lrwxrwxrwx]

按时间查找

    查找2天内被更改过的文件 
       $ find . -mtime -2 -type f -print   

      查找2天前被更改过的文件 
      $ find . -mtime +2 -type f -print   

      查找一天内被访问的文件 
      $ find . -atime -1 -type f -print   

      查找一天前被访问的文件 
      $ find . -atime +1 -type f -print   

      查找一天内状态被改变的文件 
      $ find . -ctime -1 -type f -print   

      查找一天前状态被改变的文件 
      $ find . -ctime +1 -type f -print   

      查找10分钟以前状态被改变的文件 
      $ find . -cmin +10 -type f -print 

注意

find 组合操作符 默认是与的关系

find ./ -name a -a -type f -ls

-a 是and的缩写 也就是与的关系

find ./ -name a -o -type f -ls

-o 是 or 的缩写也就是或的关系

但注意此时上面这种写法是错误的

应将 -ls 换成 -print 或者:

find ./ \(-name a -o -type f \) -ls

说明

\(   和 \)  都是转义符的写法 
find ./ -name a -not -type f -ls

-not 是非的关系 也能使用 !代替

find /dev -name a  "std*" -type l -ls

如果使用了通配符,需要用双引号

注意: 如果 find 查找路径是当前路径 (默认路径) 那结果也是当前路径

如果 find 查找路径是绝对路径 , 那结果也是绝对路径

如果希望使用当前路径 输出绝对路径 可以用 $ (pwd) 表示当前路径,或者反引号 ‘ pwd’ 但需要双引号包裹

find 后的路径 可以 是多个路径 空格分开

查找空目录

find $(pwd) -empty -type d -ls

find命令的一些动作

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bd5NA0fG-1647141068202)(/home/x-shell/图片/2022-03-13 00-19-59屏幕截图.png)]

可见%f 是只输出文件名

%h 只输出路径名

%P 忽略 find 后的路径名

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YAb9g0Rb-1647141068205)(/home/x-shell/图片/2022-03-13 00-25-04屏幕截图.png)]

-fls 是将文件覆盖写到文件中,文件不存在则会创建

-fprint 是将 print 输出的内容 覆盖写到指定文件中
-fprinto 同理 ,只是不换行
-delete  先查找 再删除

用find 命令排除子目录及文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SpKGEXr1-1647141068206)(/home/x-shell/图片/2022-03-13 00-32-04屏幕截图.png)]

说明

-path  和 -name 可以互调位置
pwd 表示当前位置 需要反引号 和双引号 
!后的路径 应以 find 后的路径开头。表示在当前目录下 排除 ba子目录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-12a0zvg7-1647141068207)(/home/x-shell/图片/2022-03-13 00-36-20屏幕截图.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IO0r7J13-1647141068208)(/home/x-shell/图片/2022-03-13 10-20-15屏幕截图.png)]

说明:

上面的 -maxdepth 1 表示从当前目录 ($pwd)向下搜寻一级
上面的 -maxdepth 2 表示从当前目录 ($pwd)向下搜寻两级

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FK8YGxx8-1647141068208)(/home/x-shell/图片/2022-03-13 10-23-13屏幕截图.png)]

说明:

上面的  -mindepth 3 表示从第 三级目录开始搜寻

有关执行命令

   1)查找 del.txt 并删除,删除前提示确认 
      $ find . -name 'del.txt' -ok rm {} \;   

   2) 查找 aa.txt 并备份为aa.txt.bak 
      $ find . -name 'aa.txt' -exec cp {} {}.bak \;

   3)查当前目录下的所有普通文件
    # find . -type f -exec ls -l {} \; 
   -rw-r–r–    1 root      root         34928 2003-02-25   ./conf/httpd.conf 
   -rw-r–r–    1 root      root         12959 2003-02-25   ./conf/magic 
   -rw-r–r–    1 root      root          180 2003-02-25   ./conf.d/README 
查当前目录下的所有普通文件,并在 - exec 选项中使用 ls -l 命令将它们列出


   4)在 /logs 目录中查找更改时间在5日以前的文件并删除它们
   $ find logs -type f -mtime +5 -exec   -ok   rm {} \;


   5)查询当天修改过的文件
   # find   ./   -mtime   -1   -type f   -exec   ls -l   {} \;

   6)查询文件并询问是否要显示


        # find   ./   -mtime   -1   -type f   -ok   ls -l   {} \;  
        < ls … ./classDB.inc.php > ? y
        -rw-r–r–    1 cnscn    cnscn       13709   1月 12 12:22 ./classDB.inc.php
        # find   ./   -mtime   -1   -type f   -ok   ls -l   {} \;  
        < ls … ./classDB.inc.php > ? n

其他示例

1、删除0字节文件
[root@localhost ~]# find . -type f -size 0 -exec rm -f {} \; 
[root@localhost ~]# find * -type f -size 0 -delete

2、find命令首先匹配所有文件名为“passwd*”的文件,用-exec  grep 过滤
[root@localhost ~]# find /etc -name "passwd*" -exec grep "test" {} \;

3、find 命令在当前目录中查找文件名以.log 结尾、更改时间在7日以前的文件,并删除它们(这种是有提示的)
[root@localhost home]# find . -name "*.log"  -mtime +7 -ok rm -f {} \;

4、在 /var/log/ 目录中查找更改时间在7日以前的文件并删除它们:
[root@localhost home]# find /var/log/ -type f  -mtime +7 -exec rm -f {} \;

有时也可看到 find * …… ,这个 * 指代的是当前路径

注意find 命令是递归查找,从当前位置查找隐含了 从当前位置以及其每个子目录查找

如:

假如在当前目录下查找文件,且当前目录下有很多文件及目录(多层目录),包括dir0、dir1和dir2 ...等目录及dir00、dir01...dir10、dir11...等子目录。

1. 在当前目录下查找所有txt后缀文件

    find ./ -name '*.txt'

2.在当前目录下的dir0目录及子目录下查找txt后缀文件

    find ./ -path './dir0*' -name '*.txt'

3.在当前目录下的dir0目录下的子目录dir00及其子目录下查找txt后缀文件

    find ./ -path '*dir00*' -name '*.txt'
    
显示/test目录下的所有目录
方式一:ls -d /test/
方式二:find /test -type d -maxdepth 1

-prune用法忽略


3、在除dir0及子目录以外的目录下查找txt后缀文件
find ./ -path './dir0*' -a -prune -o -name \*.txt -print

如果目录dir0存在(即-a左边为真),则求-prune的值,-prune 返回真,‘与’逻辑表达式为真(即-path './dir0*' -a -prune 为真),
find命令将在除这个目录以外的目录下查找txt后缀文件并打印出来;如果目录dir0不存在(即-a左边为假),
则不求值-prune ,‘与’逻辑表达式为假,则在当前目录下查找所有txt后缀文件。

4、在除dir0、dir1及子目录以外的目录下查找txt后缀文件
find ./ /( -path './dir0*' -o -path './dir1*' /) -a -prune -o -name \*.txt -print

注意:圆括号()表示表达式的结合。即指示 shell 不对后面的字符作特殊解释,而留给 find 命令去解释其意义。由于命令行不能直接使用圆括号,
所以需要用反斜杠'/'进行转意(即'/'转意字符使命令行认识圆括号)。同时注意'/(','/)'两边都需空格。

5、在dir0、dir1及子目录下查找txt后缀文件
find ./ /( -path './dir0*' -o -path './dir1*' /) -a -name \*.txt -print

6、在所有以名为dir_general的目录下查找txt后缀文件
find ./ -path '*/dir_general/*' -name \*.txt -print

**时间日期指令的补充**```
-daystart
从当日起始时开始而不是从24小时之前,计算时间(for -amin, -atime, -cmin, -ctime, -mmin, and -mtime)。

-amin n
对文件的最近一次访问是在 n 分钟之前。

-anewer file
对文件的最近一次访问比 file 修改时间要晚。如果命令行中 -follow 在 -anewer 之前(只有在这种情况下 -anewer会受 -follow 的影响)。

-atime n
对文件的最近一次访问是在 n*24 小时之前。

-cmin n
对文件状态的最近一次修改是在 n 分钟之前。

-cnewer file
对文件状态的最近一次修改比 file 修改时间要晚。如果命令行中 -follow 在 -cnewer 之前(只有在这种情况下-cnewer 会受 -follow 的影响)。

-ctime n
对文件状态的最近一次修改是在 n*24 小时之前。

-mmin n
对文件数据的最近一次修改是在 n 分钟之前。

-mtime n
对文件数据的最近一次修改是在 n*24 小时之前。
————————————————
版权声明:本文为CSDN博主「幸福丶如此」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_37886429/article/details/78434482



举报

相关推荐

0 条评论