哎呀,随着年龄的增大记性越来越差了之前学过的一些命令也就依稀记得写命令名字了(大写的监介,你懂得),趁着年前还有点时间就先把find命令简单整理一下吧,其实都知道葫芦里卖的什么药(手动哈哈)!

有人可能会说了记得名字其他不就好办了吗,直接命令行真男人(man)一下就可以拯救世界了,话虽如此,谁让本人只对女人感兴趣咧~,不扯了开始正题。

先看下find用法格式:

find   [path...] [expression]

常用选项

-name:指明要查询的文件名;

-type :指明所要查询的文件类型;

(1) l :符号文件。

(2) f:普通文件。

(3) d:目录文件。

(4) p:管道文件。

(5) c:字符设备文件,提供连续的数据流,读取数据按照先后顺序,通常不支持随机存取,比如键盘、鼠标、串口。

(6) b:块设备文件,从设备的任意位置读取一定长度的设备,也就是可以随机存取,比如硬盘、U盘、SD卡。

(7) socket:套接字文件。

-amin [+|-] time:查找在指定时间曾被存取过的文件或目录,单位以分钟计算;

-mtime [+|-] time:查找在指定时间曾被更改过的文件或目录,单位以24小时计算;

图片来源于网络

示例1:查询24小时内被修改过的文件,通过使用-mtime 0 即可完成操作,现在时间是2017.01.13 21:00,那0就表示从当前时间到2017.01.12 21:00这个时间之内被修改过的文件;

示例2:查询2天内/etc目录下被修改过的文件;

~]# find /etc -mtime -2     #是指01.11那天到01.13中间的时间,但是其实并不包含11日那天。

示例3:查询2天前修/etc目录被修改过的文件;~]# find /etc -mtime +2     #与【-】号正相反从01.11号开始算,并包含11号当天。

-size [+|-] 文件大小:查找指定文件大小的文件;

-perm [+|-]文件权限:找符合指定的权限数值的文件或目录;

+:表示的是或的意思,比方说查找具有4755权限的文件,那如果文件权限为644也会被查询出来,因为4755中也包含了644。

-:表示的是与的意思,即属主属组和其他这三者的权限全部符合指定条件才会被选定。

-newer :查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;

-maxdepth :这个在特定情况下也会用到,表示如果目录是多层嵌套的,那设定此值就是最大查询到的目录层数。

-nouser:查找没有属主的文件或目录;

-nogroup:查找没有属组的文件或目录;

-user :查找属主为指定用户的文件或目录;

-group :查找属组为指定属组的文件或目录;

-path :指定字符串作为寻找目录的条件;

-prune :不寻找字符串作为寻找文件或目录的范本样式,此选项可以在查询的目录中选择一些不希望被查找的目录来忽略,通常跟-path搭配使用;

示例:find /  -path "/proc" -prune

最后要说的一点就是find命令还有一个额外的功能,查找完指定条件的结果之后还可以通过exec参数来与其他命令组合使用来进行返回结果的处理。

示例:查找系统中没有属主和属组的文件,并将其进行删除操作;~]# find / -path "/proc" -prune -o -nouser -nogroup  -exec rm -rf {} \;

====****我是分割线****========****我是分割线****====

后边的例题用到grep ,为了方便可以先将其创建一个别名便于使用~]# alias grep=egrep --color=auto

1、找出/etc/rc.d/init.d/functions文件中某单词后面跟一组小括号的行,形如:hello();~]# grep "\\(\)" /etc/rc.d/init.d/functions

2、使用echo命令输出一个绝对路径,使用grep取出其基名;扩展:取出其路径名

(1) 取基名:~]# echo "/etc/sysconfig/network-scripts/" |grep -o "[^/]+/?$"

(2) 取路径名:

这个题如果在最后的目录分割符没有的情况使用grep比较好取,但要是实现dirname命令的所取得的结果,目前我只能使用sed来完成,grep还不知道怎么写正则表达式比较好。~]# echo "/etc/sysconfig/network-scripts/" |sed 's@\(^/.*\)/\([^/]\+\)/\?$@\1@'

3、找出ifconfig命令结果中的1-255之间数字

(1)~]# ifconfig |grep -o "[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]"

(2) 扩展,找出内容之后进行格式化输出:~]# ifconfig |grep -o "[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]"|sort -n|awk '{dig[$1]++}END{for(i in dig){printf "The digit %d\t has appears %d times\n",i,dig[i]}}'

4、查找当前系统上没有属主或属组的文件;进一步:查找当前系统上没有属主或属组,且最近3天内曾被访问过的文件或目录;

(1)没有属主或属组~]# find / -nouser -nogroup

(2) 在条件一的基础上在查找3天内被访问过的文件或目录~]# find / (-nouser -o -nogroup) -atime -3

5、查找/etc目录下大于1M,且类型为普通文件的所有文件;~]# find /etc -size +1M -type f

6、查找/etc/init.d/目录下,所有用户都有执行权限,且其它用户有写权限的文件;~]# find /etc/init.d -perm -113 -exec ls -l {} \;

7、查找/etc目录下最近一周内其内容被修改过,且不属于root或hadoop的文件;~]# fine /etc -not \( -user root -o -user hadoop \) -mtime -7 -exec ls -l {} \;

8、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加#;~]# cp -r /etc/rc.d/rc.sysinit /tmp

方法一、使用vim进行编辑操作在命令模式下操作~]# %s@^[[:space:]]\+@#@

还有一种是使用\s来替代空白字符~]# %s@^\s\+@#@g

注此种方法是将查找到的内容替代成#号,如果是在符合条件的行前添加#号的话应该使用后向引用

~]# %s@\(^\s\+\)@#\1@g

还有一种方法就是可以在不用打开文件的情况下完成以上操作~]# sed -i -r 's@^[[:space:]]+@#&@' /tmp/rc.sysinit

注意:此操作在生产环境中尽量先测试一下再将文件中的内容替换掉,以防后悔!

9、删除/tmp/rc.sysinit文件中的以#开头,且后面跟了至少一个空白字符的行行的#和空白字符

同第8题

方法一、在vim命令模式下操作~]# %s@^#\s\+@@g /tmp/rc.sysinit

方法二、使用sed编辑替换~]# sed -i -r 's@^#[[:space:]]+@@' /tmp/rc.sysinit

10、将/etc/yum.repos.d/CentOS-Media.repo文件中所有的enabled=0或gpgcheck=0的最后的0修改为1;

方法一、vim打开文件在命令模式全局替换~]# %s@\(enabled|gpgcheck\)\=0@\11@g

方法二、使用sed处理非常便捷,但是不熟练的话,还是先测试没问题之后再使用-i选项进行写入操作吧~]# sed -r -i 's@\(enabled|gpgcheck\)\=0@\1=1@g' /etc/yum.repos.d/CentOS-Media.repo

11、每周2,4,6备份/var/log/messages文件至/backup/messages_logs/目录中,保存的文件名形如messages-20161202

使用vim 编辑/etc/crontab文件~]# vim /etc/crontab

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

HOME=/

# For details see man 4 crontabs

# Example of job definition:

# .---------------- minute (0 - 59)

# |  .------------- hour (0 - 23)

# |  |  .---------- day of month (1 - 31)

# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...

# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

# |  |  |  |  |

# *  *  *  *  * user-name command to be executed

0  0  *  *  2,4,6  root dd if=/var/log/messages of=/backup/messages_logs/messages-`date +%Y%m%d`

12、每天每两小时取当前系统/proc/meminfo文件中的所有以S开头的信息至/stats/memory.txt文件中

使用vim 编辑/etc/crontab文件~]# vim /etc/crontab

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

HOME=/

# For details see man 4 crontabs

# Example of job definition:

# .---------------- minute (0 - 59)

# |  .------------- hour (0 - 23)

# |  |  .---------- day of month (1 - 31)

# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...

# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

# |  |  |  |  |

# *  *  *  *  * user-name command to be executed

0 */2  *  *  *  root  grep "^S.*" /proc/meminfo >>/tmp/memory.txt

13、写一个脚本创建10个用户user10-user19;密码同用户名~]# mkdir scripts

~]# vim addUser.sh

#!/bin/bash

#

#Program: Automatically create user scripts

#History:

#Author: Bing Version:0.0.1 2017-01-13 15:52

for i in {10..19};do

if ! `id user$i &>/dev/null`;then

useradd user$i &>/dev/null && echo "user$i"|passwd --stdin user$i &>/dev/null && echo "user$i create success!"

else

userdel -r user$i &>/dev/null && echo "user$i delete success!"

fi

done

linux find返回数据不一样,Linux学习笔记——find命令相关推荐

  1. 用matlab代码进行数据探索、数据清洗学习笔记

    目录 1.说明 2.作文目的 3.数据质量分析3个判别方法 3-1.异常值判别 3-1-1.箱型图法 3-1-2.3σ准(原)则(拉依达准则) 3-2.缺失值判别 3-3.不一致的值判别 4.数据清洗 ...

  2. 获取两个数据的交集_Redis学习笔记统计该如何选择数据类型

    关注爱因诗贤每天进步一点点导读 在业务场景中经常需要统计,如某直播累计观看人数.独立访客人数.历史总观看人数等等,再比如要统计某学生某月的签到情况等,遇到统计的情况,就需要思考如何合理地选择 Redi ...

  3. 在大量数据迁移期间oracle学习笔记

    在数据迁移期间oracle学习笔记 0主键(自增) 1用户代码 2区域代码 3承保公司代码 4理赔编码 5投保确认码 6案件状态 7案件进展 8重开案件进展 9转换后案件状态 需求分析: 1.根据上述 ...

  4. python segy格式地震数据读写包segyio学习笔记(二)

    python segy格式地震数据读写包segyio学习笔记(二) 最近大致搞明白了segyio读取叠后和叠前segy数据的方法,以及内部存储结构,以两段代码为例: 叠后数据读取.这是一个从给定时窗内 ...

  5. MOOS学习笔记3——命令行

    MOOS学习笔记3--命令行 例程 /** * @code A simple example showing how to use a comms client问问怎么样 */#include &qu ...

  6. [原创]Saltstack学习笔记:命令参数详解以及配置文件说明

    很久没有更新saltstack的文章了,今天还是来更新一点,又开始对saltstack复习了一下. 前边写了一点<saltstack入门概述(1)>以及<Saltstack如何安装( ...

  7. linux基础的一些常见问题总结_学习笔记

    平时自己的总结(miscellaneous) oracle无法实现远程用户连接:   解决办法:        #sqlplus /nolog     SQL> connect / as sys ...

  8. linux数据库创建score表,MySQL数据库学习笔记

    MySQL数据库学习笔记phpma (实验环境:Redhat9.0,MySQL3.23.54) 纲要: 一,连接MySQL phpma 二,MySQL管理与授权 三,数据库简单操作 四, 数据库备份 ...

  9. linux disk 清除数据,如何在Linux中使用TestDisk恢复已删除的文件

    我们都知道寻找文件而不是找到文件的感觉,即使是在垃圾桶里也是如此. 由于TestDisk ,文件和数据丢失带来的创伤应该结束 - 这是一个免费的开源软件,最初设计用于恢复内存分区并使不可引导的磁盘再次 ...

最新文章

  1. AI新方向:对抗攻击
  2. 吐槽express 中间件multer
  3. Kubernetes 入门(2)基本组件
  4. visual studio installer可以卸载吗_技术帖 | 这些宝藏软件你安装了吗?
  5. 超出想象-超级终端显示器
  6. kinect v1原理_Kinect原理及介绍.ppt
  7. python 调用图灵机器人api实现简单的人机交互
  8. 哈尔滨计算机工程黑icp备,关于组织我校青年教师及研究生参加2017年中、俄、蒙、德计算机科学、计算机工程及教育技术国际夏令营活动的通知...
  9. 基于SpringBoot超市库存管理系统+文档
  10. 使用ACCESS数据库时出现“操作必须使用一个可更新的查询”的解决办法
  11. Qt解决资源文件中无法显示图片的问题
  12. 初学者如何从零开始搭建一个阿里云数据库
  13. 【毕业设计】大数据招聘数据分析可视化 - python
  14. Java生成sitemap网站地图
  15. 谈谈我理解的SA——Systems Architecture
  16. RedisTemplate下Redis分布式锁引发的系列问题
  17. 深入分析Android 9.0源代码——Activity启动流程
  18. (C++)librdkafka的producer样例
  19. 云原生之使用Docker部署webssh工具sshwifty
  20. 【Android Studio】为Android Studio设置HTTP代理

热门文章

  1. 在 vue 中使用 SVG 建立图标系统并且使用
  2. pattern和match的用法 java篇
  3. 慧算账张述刚荣获最佳产品领导力人物奖
  4. 食品行业S2B2C电商交易系统“食”不我待,S2B2C平台加快食品供应链流转
  5. 怎样在线制作视频二维码?多种类型二维码一键生成技巧
  6. SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛*(抽球游戏-fwt开立方)
  7. 如何断开mongodb数据库连接_如何创建mongodb数据库连接
  8. 【Unity3D插件】AVPro Video插件分享《视频播放插件》
  9. 人造指针_如何用程式化的阴影和细节制作人造HDR照片
  10. 万豪国际集团全新人才品牌“Be”将于全球超8300家酒店上线 | 美通社头条