Linux命令查找文件或目录 find及结合xargs应用

find 命令可以根据给定的路劲和表达式查找指定的文件或目录。find 参数选项很多,并且支持正则表达式,功能强大。 和管道结合使用可以实现复杂的功能,是系统管理和普通用户必须掌握的命令。

一、find 命令格式说明

path find命令查找的目录路径。
-print find命令将匹配到的文件输出到标准输出。
-exec find 命令对匹配的文件执行该参数所给出的Shell命令。
-ok 和 -exec的作用相同,只是更安全,在执行每个命令之前,都会给出提示,让用户来确定是否执行。

二、find命令常用参数说明

  -name   按照文件名查找文件
  -cpio: 对匹配的文件使用 cpio 命令,将这些文件备份到磁带设备中
  -prune 按照文件权限进行查找文件 
  -user 按照文件属主来查找文件
  -group 按照文件所属的组来查找文件
  -mtime -n +n 按照文件更改的时间来查找文件,-n 表示更改时间距现在 n 天以内,+n 表示更改时间距现在 n 天以前
   -nogroup 查找无效所属组的文件
   -nouser 查找无效属主文件
   -newer file1 !file2 查找更改时间比 file1 新但比 file2 旧的文件
   -follow 如果 find 查找的为链接文件,就跟踪至连接所指向的文件
   -mount 在查找文件时不跨越文件系统 mount 点
   -fstype 查找位于某一类型文件系统中的文件
   -depth 在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找
   -size n 查找文件长度为 n 块的文件,带有 c 时表示文件长度以字节计
   -type 查找某一类型的文件
   -amin n 查找系统中最后 n 分钟访问的文件
   -atime n 查找系统中最后 n*24 小时访问的文件
   -cmin n 查找系统中最后 n 分钟被改变文件状态的文件
   -ctime n  查找系统中最后 n*24 小时被改变文件状态的文件
   -mmin n 查找系统中最后 n 分钟被改变文件数据的文件
   -mtime n  查找系统中最后 n*24 小时被改变文件数据的文件
   -empty 查找系统中空白的文件或目录,或目录中没有子目录的文件夹
   -false 查找系统中总是错误的文件
   -gid n 查找系统中文件数字组ID为 n 的文件
   -daystart 测试系统中从今天开始 24 小时以内的文件,用法类似于 -amin
   -help 显示命令摘要(帮助)
   -maxdepth levels 在某个层次目录中按照递减方法查找

三、find基本用法

find 如不加任何参数,表示查找当前路径下的所有文件和目录

find -print 将结果打印到标准输出

find /data/log 指定路劲查找

  find / -name "abc.txt" 在系统中查找 abc.txt 如果执行完毕没有找到,则说明系统中不存在该文件

find 还支持正则表达式查找

   find /data/logs -mame "*.log"  -type f -printf    查找符合指定字符串的文件
  find . -name "[0-9]" -type f   查找以数字开头的文件
  find / -mtime -1 |head  查找系统内最近24小时修改过的文件
   find / -mmin  -15|head   查找系统内最近15 分钟修改过的文件

find 使用 type 选项可以查找特定的文件类型,常见类型如下

  b 块设备文件
  d 目录
  c 字符设备文件
  p 管道文件
  l 符号链接文件
  f 普通文件

  find . -type d 查找当前路径中的所有目录

  find . -type f 查找当前路径中的所有文件

find . -type l 查找当前路径中的所有符号链接文件

四、xargs命令

原始kubernetes dashboard的界面中仅显示了pod一些配置信息,无法图形化展现集群度量指标信息。 args命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。它擅长将标准输入数据转换成命令行参数,xargs能够处理管道或者stdin并将其转换成特定命令的命令参数。xargs也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。xargs的默认命令是echo,空格是默认定界符。这意味着通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格取代。xargs是构建单行命令的重要组件之一。 xargs用作替换工具,读取输入数据重新格式化后输出。 定义一个测试文件,内有多行文本数据: cat test.txt a b c d e f g h i j k l m n o p q r s t u v w x y z 多行输入单行输出: cat test.txt | xargs a b c d e f g h i j k l m n o p q r s t u v w x y z -n选项多行输出: cat test.txt | xargs -n3 a b c d e f g h i j k l m n o p q r s t u v w x y z -d选项可以自定义一个定界符: echo "nameXnameXnameXname" | xargs -dX name name name name 结合-n选项使用: echo "nameXnameXnameXname" | xargs -dX -n2 name name name name 读取stdin,将格式化后的参数传递给命令 假设一个命令为 sk.sh 和一个保存参数的文件arg.txt: #!/bin/bash #sk.sh命令内容,打印出所有参数。 echo $* arg.txt文件内容: cat arg.txt aaa bbb ccc xargs的一个选项-I,使用-I指定一个替换字符串{},这个字符串在xargs扩展时会被替换掉,当-I与xargs结合使用,每一个参数命令都会被执行一次: cat arg.txt | xargs -I {} ./sk.sh -p {} -l -p aaa -l -p bbb -l -p ccc -l 复制所有图片文件到 /data/images 目录下: ls *.jpg | xargs -n1 -I cp {} /data/images

xargs其他应用 假如你有一个文件包含了很多你希望下载的URL,你能够使用xargs下载所有链接: cat url-list.txt | xargs wget -c

五、xargs结合find使用

  find命令可以把匹配到的文件传递给 xargs 命令执行,在使用 find 命令的 -exec 选项处理匹配到的文件时,find将所有匹配到的文件一起传递给 exec 执行。由于有些系统对能够传递给 exec 的命令长度有限制,这样会引起溢出错误。这时可以使用 xargs 命令。

    find . -type f -name "*.log" -print0 | xargs -0 rm -f #xargs -0将\0作为定界符
    find . -type f -name "*.php" -print0 | xargs -0 wc -l #统计一个源代码目录中所有php文件的行数
    find . -type f -name "*.jpg" -print | xargs tar -czvf images.tar.gz #查找所有的jpg 文件,并且压缩它们
  find / type f -print | xargs file    查找系统中的每一个普通文件,并用 file 命令来测试它们分别属于哪一类文件。
  find . -type f -name "\.log" -print | xargs rm  查找当前目录下的 .log 文件,并删除 。
  find . -type f -exec ls -l {} \;  用 ls -l 列出所有匹配到的文件。
  find logs  -type f -mtime +5 -exec rm {} \;  查找 log 中更改时间在 5 天前的文件并删除。
  find logs -type f -ok rm {} \;  查找 log中的所有普通文件并在删除前确认。  
  find . -type f -name "\.log" -print | gerp "node"     查找当前目录下的 .log 文件,并从查找结果中筛选出带有 node 字符串的文件 。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器学习、深度学习

vim 编辑器安装 使用

if [-x /usr/bin/numlockx ]; then numlockx on fi

9830
来自专栏漫漫深度学习路

tensorflow学习笔记(九):tf.shape()与tensor.get_shape()

我们经常会这样来feed数据,如果在运行的时候想知道None到底是多少,这时候,只能通过tf.shape(x)[0]这种方式来获得.

25520
来自专栏FEWY

:before 和 :after的多用途实践 — 特效篇(1)

讲了一些,:before和:after的知识,但是用他们去做页面内容的美化并没有太多,我们知道CSS控制网页内容的外观,CSS的意义就是实现将内容与表现形式...

13220
来自专栏没有擅长的YcY

python模块之subprocess模块级方法

参数:(*popenargs, input=None, capture_output=False, timeout=None, check=False, **k...

10820
来自专栏机器学习、深度学习

GTX1080 安装 cuda 8.0 + cuDNN5.1

ubuntu下按ctrl+alt+f1~f6出现黑屏现象的解决方法 sudo apt-get install bumblebee bumblebee-nv...

25250
来自专栏机器学习实践二三事

Caffe上训练使用自己的数据

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.n...

14120
来自专栏锦小年的博客

linux服务器搭建之路14-给普通用户添加管理员权限

最后一步,非常重要: 因为sudo 会重置环境变量,这样会导致自己环境变量失效,从而某些命令失效。解决办法: (1) 修改/etc/sudoers 文件: ...

24820
来自专栏机器学习、深度学习

怎么使用 Caffe 进行 LetNet-5 的训练和预测

在 LeNet5的深入解析 我们已经对 LetNet-5 网络结构做出了详细的描述,接下来我们将深入分析 Caffe 中怎么使用 LetNet-5 的这个模型进...

11330
来自专栏机器学习、深度学习

ubuntu16.04 cuda9.0 cudnn Tensorflow GPU 1.10.0

apt-get update && apt-get dist-upgrade reboot do-release-upgrade

16240
来自专栏大数据学习笔记

基础教程:3、Xshell 6 个人版安装与远程操作连接服务器

版权声明:本文为博主原创文章,欢迎转载。 https://blog.csdn.net/che...

38820

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励