shell脚本--文件查找之find命令

首先是通过文件名称来查找,需要使用一个-name参数。

查询以  .txt结尾的文件,和以 t 开头的文件:

[email protected]:~/test$ ls
one.txt  three.txt  two.txt
[email protected]:~/test$ find ./ -name ‘*.txt‘
./two.txt
./one.txt
./three.txt
[email protected]:~/test$ find ./ -name ‘t*‘
./two.txt
./three.txt

  其中  ./ 表示当前目录,后面还可以跟上一些简单的正则表达式,如下面的例子,注意此时正则表达式需要使用引号括起来。

[email protected]:~/test$ touch 123.txt
[email protected]:~/test$ find ./ -name ‘[a-z]‘*    #以一个字母开头的文件
./two.txt
./one.txt
./three.txt
[email protected]:~/test$ find ./ -name ‘[1-9]‘*    #以一个数字1-9开头的文件
./123.txt
[email protected]:~/test$

  

可以通过权限值来查找,此时要使用-perm 参数

[email protected]:~/test$ ls -l
total 0
-rw-rw-r-- 1 ubuntu ubuntu 0 1月  20 21:24 123.txt
-rw-rw-r-- 1 ubuntu ubuntu 0 1月  20 21:18 one.txt
-rw-rw-r-- 1 ubuntu ubuntu 0 1月  20 21:18 three.txt
-rw-rw-r-- 1 ubuntu ubuntu 0 1月  20 21:18 two.txt
[email protected]:~/test$ chmod 777 one.txt
[email protected]:~/test$ find -perm 777
./one.txt
[email protected]:~/test$ find -perm 664
./two.txt
./three.txt
./123.txt
[email protected]:~/test$

  

还可以通过文件类型来查找,使用-type参数,其中f表示文件,d表示目录

[email protected]:~/test$ mkdir dirOne
[email protected]:~/test$ ls -l
total 4
-rw-rw-r-- 1 ubuntu ubuntu    0 1月  20 21:24 123.txt
drwxrwxr-x 2 ubuntu ubuntu 4096 1月  20 21:37 dirOne
-rwxrwxrwx 1 ubuntu ubuntu    0 1月  20 21:18 one.txt
-rw-rw-r-- 1 ubuntu ubuntu    0 1月  20 21:18 three.txt
-rw-rw-r-- 1 ubuntu ubuntu    0 1月  20 21:18 two.txt
[email protected]:~/test$ find ./ -type f
./two.txt
./one.txt
./three.txt
./123.txt
[email protected]:~/test$ find ./ -type d
./
./dirOne
[email protected]:~/test$

  

可以根据文件创建者查找,使用-user参数

[email protected]:~/test$ ls -l
total 4
-rw-rw-r-- 1 ubuntu ubuntu    0 1月  20 21:24 123.txt
drwxrwxr-x 2 ubuntu ubuntu 4096 1月  20 21:37 dirOne
-rwxrwxrwx 1 ubuntu ubuntu    0 1月  20 21:18 one.txt
-rw-r--r-- 1 root   root      0 1月  20 21:42 RootTouch
-rw-rw-r-- 1 ubuntu ubuntu    0 1月  20 21:18 three.txt
-rw-rw-r-- 1 ubuntu ubuntu    0 1月  20 21:18 two.txt
[email protected]:~/test$ find -user root
./RootTouch
[email protected]:~/test$ find -user ubuntu
.
./two.txt
./one.txt
./three.txt
./123.txt
./dirOne
[email protected]:~/test$

  

可以根据文件更改时间来查找,使用-mtime参数。

find ./ -mtime -5   #查找当前目录下,5天以内更改过的文件或者目录
find ./ -mtime +3    #查找当前目录下,最后一次更改时间在3天以前的文件

  

根据文件大小来查找,使用-size参数。注意如果要是用文件区间,则每一个文件大小的前面都要加上-size参数,和mtime类似。还要注意的是,1兆字节使用1M,不要使用1m

[email protected]:~/test$ ls -l
total 8
-rw-rw-r-- 1 ubuntu ubuntu    0 1月  20 21:24 123.txt
drwxrwxr-x 2 ubuntu ubuntu 4096 1月  20 21:37 dirOne
-rwxrwxrwx 1 ubuntu ubuntu   15 1月  20 22:01 one.txt
-rw-r--r-- 1 root   root      0 1月  20 21:42 RootTouch
-rw-rw-r-- 1 ubuntu ubuntu    0 1月  20 21:18 three.txt
-rw-rw-r-- 1 ubuntu ubuntu    0 1月  20 21:18 two.txt
[email protected]:~/test$ find ./ -size -10c   #小于10字节的文件
./two.txt
./RootTouch
./three.txt
./123.txt
[email protected]:~/test$ find ./ -size +10c -size -20c   #小于20字节,大于10字节的文件
./one.txt
[email protected]:~/test$

  

find的这些参数是可以配合使用的,还可以使用xargs命令配合使用,将结果作为xargs后面命令的输入。

原文地址:https://www.cnblogs.com/-beyond/p/8322161.html

时间: 2024-10-14 10:14:45

shell脚本--文件查找之find命令的相关文章

3.shell编程-文件查找之find命令

3.1.语法格式 find [路劲][选项][操作] 选项参数对照表 3.2.-name 查找/etc/目录下以.conf结尾的文件 find /etc/ -name "*.conf" -iname   不区分大小写 find /etc/ -iname "*.conf" -user      查找当前目录为root用户的文件 find ./ -user root 3.3.-type 文件的类型 f     文件 d    目录 c    字符设备文件 b    块设

解决方案:centos运行shell脚本时报“$'\r': 未找到命令”

=============================================== 2018/9/12_第1次修改                       ccb_warlock =============================================== 问题: 将vs code里编写好的sh脚本(tmp.sh)上传到服务器(centos),运行时报"$'\r': 未找到命令". 解决方案: 查了资料后才知道,由于该脚本的命令在windows上编辑后

Linux Shell脚本入门--cut命令

Linux Shell脚本入门--cut命令 cut cut 命令可以从一个文本文件或者文本流中提取文本列. cut语法 [[email protected] ~]# cut -d'分隔字符' -f fields <==用于有特定分隔字符 [[email protected] ~]# cut -c 字符区间 <==用于排列整齐的信息 选项与参数: -d :后面接分隔字符.与 -f 一起使用: -f :依据 -d 的分隔字符将一段信息分割成为数段,用 -f 取出第几段的意思: -c :以字符 (

远程调用shell脚本文件和远程复制文件

1.安装sshpass yum install sshpass 2.本地调用远程服务器的shell脚本文件: sshpass -p sa ssh [email protected] -C "/bin/bash" < test.sh 3.从本地复制文件到远程服务器: sshpass -p sa scp egova-pub-ex.jar [email protected]:/egova 原文地址:https://www.cnblogs.com/zhaoyanhaoBlog/p/119

续写vim,shell脚本基础编辑,read命令,if与case判断语句,文件查找方式,压缩与解压,

一. Vim续写 ?1.命令扩展模式的位置定界 ??起始位置 cmd 终止位置???Cmd:????y复制????d删除????Gu变大写????gu变小写??例如:0y$命令意味着:????0 先到行头????Y 从这里开始拷贝????$ 拷贝到本行行尾最后一个字符????Ye 从当前位置拷贝到本单词的最后一个字符 ?2.扩展命令模式:地址定界 ? ?# 具体第#行,? ?#1,#2 从开头数第#1行到第#2行? ?#1,+#2 从开头数的第#1行到从第#1行开始数的第#2行? ? ?例:2,

shell文件查找和压缩命令

locate命令 1.locate filename     模糊匹配 只要文件名中包含关键字即可     非实时查找,速度比find快.     依靠索引数据库 /var/lib/mlocate/mlocate.db     每天自动运行一次来更新数据库.     updatedb 更新索引数据库 2.适合搜索变化不太频繁的文件.对系统的资源消耗不大. 3.实例 1.    locate -r "^/etc/.*\.conf$" find命令 实时查找工具,通过遍历指定路径来完成文件

shell脚本知识(二)命令字符操作

1.cat 不仅可以读取文件并拼接数据,他还能够从标准输入中进行读取. 用cat将输入文件的内容与标准输入拼接在一起:$ echo 'Text through stdin' | cat - file.txt 压缩空白行: 将文本中多个空白行压缩成单个: cat -s file. 移除空白行:cat  file  | tr  -s '\n' . 将连续多个'\n' 字符压缩成单个'\n' (换行符). 将制表符显示为^| :cat  -T 2.find 查找中匹配多个条件中的一个,可采用OR条件:

shell脚本编程-使用结构化命令(if/else)(转)

11.1 使用if-then语句 格式如下 if语句会执行if行定义的那个命令,如果该命令的退出状态码是0,则then部分的语句就会执行,其他值,则不会 1 2 3 4 if command then commands fi 在要执行的命令结尾加个分号,就能在同一行使用then语句了,格式如下 1 2 3 if command; then commands fi 11.2 if-then-else语句 格式如下: 1 2 3 4 5 6 if command then commands else

inux C程序中获取shell脚本输出(如获取system命令输出)

转载自 http://blog.csdn.net/hjxhjh/article/details/7909518 1. 前言 Unix 界有一句名言:"一行shell脚本胜过万行C程序",虽然这句话有些夸张,但不可否认的是,借助脚本确实能够极大的简化一些编程工作.比如实现一个 ping程序来测试网络的连通性,实现ping函数需要写上200~300行代码,为什么不能直接调用系统的ping命令呢?通常在程序中通过 system函数来调用shell命令.但是,system函数仅返回命令是否执行