find,grep,locate ,Xargs常用用法

一、find的常用用法
find < path > < expression > < cmd >

path: 所要搜索的目录及其所有子目录。默认为当前目录。
expression: 所要搜索的文件的特征。
cmd: 对搜索结果进行特定的处理。


参数

  • -perm 按照文件权限来查找文件
  • -mtime -n/+n 按照文件的更改时间来查找文件, -n表示文件更改时间距现在n天以内,+n表示文件更改时间距现在n天以前。
  • -newer file1 ! file2查找更改时间比文件file1新但比文件file2旧的文件
  • -type查找某一类型的文件,诸如:
    b - 块设备文件。
    d - 目录。
    c - 字符设备文件。
    p - 管道文件。
    l - 符号链接文件。
    f - 普通文件
  • -exec,find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为’command’ {} \; 注意{}\;之间的空格
  • -ok,和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。

example:

find . -perm 755 –print 在当前目录下查找文件权限位为755的文件
find / -mtime -5 –print 在系统根目录下查找更改时间在5日以内的文件
find /var/adm -mtime +3 –print 在/var/adm目录下查找更改时间在3日以前的文件
find /etc -type d –print 在/etc目录下查找所有的目录  [type表示查找什么样的文件类型]
find ./ -size 0 -exec rm {} \;   = rm -i `find ./ -size 0`   = find ./ -size 0 | xargs rm -f &  删除文件大小为零的文件 

find 与xargs的结合 常用于find进行查找文件,之后xargs对其进行处理

xargs的使用是由于很多命令不支持|管道来传递参数,才因此使用这个命令
如下方的例子,xargs -i 表示的是将前面find找到的结果一行一行赋值给{},-t表示的是先打印命令,然后再执行。
xargs的其他参数具体使用方法参见:xargs的用法

[root@master01 test]# touch file{1..3}.log
[root@master01 test]# ls
file1.log  file2.log  file3.log
[root@master01 test]# find . -type f -exec ls {} \;
./file1.log
./file2.log
./file3.log
# 复制并修改符合条件的文件
[root@master01 test]# find . -type f -exec cp {} {}.bak  \;
[root@master01 test]# ls
file1.log  file1.log.bak  file2.log  file2.log.bak  file3.log  file3.log.bak
# rename将符合条件的文件改名
[root@master01 test]# find . -type f -exec rename .log.bak    .txt   {}  \;
[root@master01 test]# ls
file1.log  file1.txt  file2.log  file2.txt  file3.log  file3.txt
------------
# 找到符合条件的文件并复制到远程服务器上
[root@zz-master01 test]# find . -type f -name "*.txt"| xargs -i -t scp  {} zz-master01:/root
scp ./file1.txt zz-master01:/root 
root@zz-master01's password: 
file1.txt                                                                                                                                100%    0     0.0KB/s   00:00    
scp ./file2.txt zz-master01:/root 
root@zz-master01's password: 
file2.txt                                                                                                                                100%    0     0.0KB/s   00:00    
scp ./file3.txt zz-master01:/root 
root@zz-master01's password: 
file3.txt                                                                                                                                100%    0     0.0KB/s   00:00 

值得注意的是 find 在寻找数据的时候相当的耗硬盘,所以没事情不要使用 find 啦!有更棒的指令可以取代呦,那就是下方的whereislocate

二、locate命令

locate命令其实是“find -name”的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库

locate /etc/sh
搜索etc目录下所有以sh开头的文件。 【locate后面直接接一个路径,locate /etc/*.log】
$ locate -i ~/m
搜索用户主目录下,所有以m开头的文件,并且忽略大小写。【-i表示忽略大小写】
三、whereis命令

whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数 -b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息
whereis grep [如不加任何参数就会搜索所有相关的文件,如grep 的man说明文件,源码包]

example:

[root@data ~]# whereis grep 
grep: /bin/grep /usr/share/man/man1p/grep.1p.gz /usr/share/man/man1/grep.1.gz
[root@data ~]# whereis -b grep 
grep: /bin/grep
四、which命令

which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。

example:

[root@data ~]# which  grep    【可以看出grep这个命令是在/bin下】
/bin/grep
五、grep命令

grep 命令参数:

  • -i 忽略大小写
  • -A 前面
  • -B 后面
  • -C 上下
  • -l 只显示搜索的文件名
  • -n 给每行数据添加行数
  • -R 递归
  • -w 单词边界
  • -E 正则表达式中不需要扩展
  • -o 输出匹配的那部分,而不是整行
  • -o|wc -l 显示文件中某个单词出现的次数
  • -c 匹配的行数
  • -v 反向
  • -q 不输出但返回值

example:

- 在/root/桌面下搜索所有含有root 的文件:
[root@scott 桌面]# grep -l "root" -R  /root/桌面   
/root/桌面/passwd

- 打印出/etc/passwd文件中包含gdm的行,并打出其下面2行:
[root@scott ~]# grep -A2 -n gdm /etc/passwd
26:gdm:x:42:42::/var/lib/gdm:/sbin/nologin
27-ntp:x:38:38::/etc/ntp:/sbin/nologin
28-apache:x:48:48:Apache:/var/www:/sbin/nologin 
------如果是打印出gdm的上面两行用B2,如果是上面两行以及下面两行用C2 --------------
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容