linux shell 脚本攻略学习5---find命令详解
1.find命令详解
语法:
find base_path#base_path可以是任何位置,find会从该位置向下找
实例:
amosli@amosli-pc:~$ find /home/amosli/learn/
/home/amosli/learn/
/home/amosli/learn/timing.log
/home/amosli/learn/file.py
......
查找当前目录:
find . -print,'.'代表当前目录,'..'代表父目录,-printf指明打钱出匹配文件的文件名(路径)。当使用-print时,‘\n’作为分隔文件的定界符
根据文件名或者正则表达式匹配搜索
-name 参数,搜索文件名中以.txt结尾的文件:
amosli@amosli-pc:~/learn$ find /home/amosli/learn/ -name "*.txt" -print
/home/amosli/learn/input.txt
/home/amosli/learn/stderr.txt
/home/amosli/learn/test1.txt
/home/amosli/learn/output.txt
/home/amosli/learn/out.txt
/home/amosli/learn/mutil_blank.txt
/home/amosli/learn/stdout.txt
/home/amosli/learn/text.txt
查找文件名不区分大小写-iname参数:
amosli@amosli-pc:~/learn$ find . -iname 'tex*'
./TEXT.txt
./text.txt
-o参数,用来匹配多个条件中的一个:
amosli@amosli-pc:~/learn$ find . \( -name "te*" -o -name "*.pdf" \)
./text.pdf
./test1.txt
./text.txt
-path参数,用来匹配文件路径或者文件的:
amosli@amosli-pc:~/learn$ find . -path "*test*"
./test1.txt
./test
-regex参数,使用正则表达式来匹配:
amosli@amosli-pc:~/learn/test$ ls
new.PY next.jsp test.py
amosli@amosli-pc:~/learn/test$ find . -regex ".*\(\.py\|\.sh\)$"
./test.py
基于目录深度的搜索:
-maxdepth和-mindepth,最大深度,最小深度搜索,会搜索子目录
amosli@amosli-pc:~/learn/test$ find . -maxdepth -type f
./new.PY
./test.py
./next.jsp
amosli@amosli-pc:~/learn/test$ find . -mindepth -type f #如果深度为>1的话就没有结果了,因为下面没有子目录了
./new.PY
./test.py
./next.jsp
基于文件类型的搜索:
find . -type d -print
f 普通文件
l 符号链接
d 目录
c 字符设备
b 块设备
s 套接字
p Fifo
amosli@amosli-pc:~/learn/test$ find . -type d
.
amosli@amosli-pc:~/learn/test$ find . -type f
./new.PY
./test.py
./next.jsp
根据文件时间搜索
计量单位 天
-atime 最近一次访问时间
-mtime 最后一次被修改时间
-ctime 文件元数据,最近一次修改时间 find . -type f -atime - -print #七天内
+ -print #超过七天
分钟
-amin 访问时间
-mmin 修改时间
-cmin 变化时间
find . -type f -newer file.txt -print #用于比较时间戳的参考文件,比参考文件更新的文件
根据文件大小的搜索
find . -type f -size +2k
+ 大于 -小于 无符号,恰好等于 b 块
c 字节
w 字(2字节)
k 千字节
M 兆字节
G 吉字节
学了这么多实际应用一把:
需求:查找普通文件大于100M的以zip结尾的文件,顺便清理掉垃圾文件
amosli@amosli-pc:/$ sudo find . -mindepth -type f -size +100M -name "*.zip"
./home/amosli/project/software/zip_tar/glassfish-4.0-ml.zip
./home/amosli/下载/96186_20130619.zip
现在删除glassfish的zip包
amosli@amosli-pc:/$ rm /home/amosli/project/software/zip_tar/glassfish-4.0-ml.zip
amosli@amosli-pc:/$ sudo find . -mindepth -type f -size +100M -name "*.zip"
./home/amosli/下载/96186_20130619.zip
是不是感觉有点麻烦?找到之后还要手工去删除。下面介绍-delete参数就可以解决这个问题了。
-delete 删除匹配的文件
find . -type f -name "*.swp" -delete
#注意:-delete位置一定是最后
再执行一下刚才的命令加上-delete参数
amosli@amosli-pc:/$ sudo find . -mindepth -type f -size +100M -name "*.zip" -delete
即可删除96186_20130619.zip
-exec 执行命令或动作
find . -type f -user root -exec chown slynux {} \;
find . -type f -exec cp {} OLD \;
find . -iname "abc.txt" -exec md5sum {} \;
exec无法结合多个命令,可以将多个命令放入脚本调用
实例:
root@amosli-pc:/home/amosli/learn/test9# ll
total
drwxrwxr-x amosli amosli 12月 : ./
drwxrwxr-x amosli amosli 12月 : ../
-rw-r--r-- root root 12月 : a.txt
-rw-r--r-- root root 12月 : b.txt
root@amosli-pc:/home/amosli/learn/test9# find . -type f -user root -exec chown amosli {} \;
root@amosli-pc:/home/amosli/learn/test9# ll
total
drwxrwxr-x amosli amosli 12月 : ./
drwxrwxr-x amosli amosli 12月 : ../
-rw-r--r-- amosli root 12月 : a.txt
-rw-r--r-- amosli root 12月 : b.txt
find . -type f -user root -exec chown amosli {} \;
说明:-exec执行了chown 命令,将文件权限改为amoslib .{}是一个特殊的字符串,对于每一个匹配的文件来说,{}会被替换成相应的文件名
跳过指定目录
find . \( -name ".git" -prune \) -name '*.txt'
\( -name ".git" -prune \)表示应当去除.git仓库存储文件,然后查询当前目录下名称为*.txt的文件。
linux shell 脚本攻略学习5---find命令详解的更多相关文章
- linux shell 脚本攻略学习12--文件权限详解,chmod命令详解,chown命令详解,chattr命令详解
文件权限详解 一.chmod命令详解 文件权限和所有权是Unix/Linux文件系统最显著的特征之一.linux中的每一个文件都与多种权限类型相关联,在这些权限中主要分类为3种: 用户(User)是文 ...
- linux shell 脚本攻略学习6-xargs详解
xargs是一条Unix和类Unix操作系统的常用命令.它的作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题. 例如,下面的命令: rm `find /path -type f` ...
- linux shell 脚本攻略学习20--awk命令入门详解
awk生于1977年,创始人有三个,分别为 Alfred Aho,Peter Weinberger, 和 Brian Kernighan,名称源于三个创始人的姓的首字母. 作用:处理文本文件. awk ...
- linux shell 脚本攻略学习16--wc命令详解,tree命令详解
在文本处理的工作中,统计文件的行数,单词数和字符数非常有用.而对于开发人员本身来说,统计LOC(line of code ,代码行数)是一件重要的工作.linux中有什么命令可以帮助我们做统计呢?没错 ...
- linux shell 脚本攻略学习14--head命令详解,tail命令详解
当要查看上千行的大文件时,我们可不会用cat命令把整个文件内容给打印出来,相反,我们可能只需要看文件的一小部分地内容(例如文件的前十行和后十行),我们也有可能需要打印出来前n行或后n行,也有可能打印除 ...
- linux shell 脚本攻略学习13--file命令详解,diff命令详解
一.file命令详解 find命令可以通过查看文件内容来找出特定类型的文件,在UNIX/ Linux系统中,文件类型并不是由文件扩展名来决定的(windows中却正是这么做的),file命令的目的是从 ...
- linux shell 脚本攻略学习11--mkdir和touch命令详解
一.创建目录(mkdir命令详解) amosli@amosli-pc:~/learn$ mkdir dir amosli@amosli-pc:~/learn/dir$ mkdir folder amo ...
- linux shell 脚本攻略学习9--rename命令详解
rename命令详解: 对文件重命名是常用的操作之一,一般对单个文件的重命名用mv命令,如: amosli@amosli-pc:~/learn/example$ ls abc.txt amosli@a ...
- linux shell 脚本攻略学习8---md5校验,sort排序,uniq命令详解
一.校验与核实 目前最为出名的校验技术是md5sum和sha1sum,它们对文件内容使用相应的算法来生成校验和. 举例: amosli@amosli-pc:~/learn$ md5sum text.t ...
- linux shell 脚本攻略学习7---tr命令详解
tr命令详解 什么是tr命令?tr,translate的简写,translate的翻译: [trænsˈleit] vi. 翻译, 能被译出 vt. 翻译, 解释, 转化, 转变为, 调动 在这里用到 ...
随机推荐
- tf.concat, tf.stack和tf.unstack的用法
tf.concat, tf.stack和tf.unstack的用法 tf.concat相当于numpy中的np.concatenate函数,用于将两个张量在某一个维度(axis)合并起来,例如: a ...
- js 正则表验证输入
输入1-9的整数 <input type="text" class="form-control" style="width: 60px;disp ...
- linux下判断文件和目录是否存在[总结]
1.前言 工作中涉及到文件系统,有时候需要判断文件和目录是否存在.我结合APUE第四章文件和目录,总结一下如何正确判断文件和目录是否存在,方便以后查询. 2.stat系列函数 stat函数用来返回与文 ...
- (转) Unity3D 使用Texturepacker打包工具制作NGUI(Atlas)图集
转自:http://www.unitymanual.com/thread-37485-1-1.html 由于NGUI AtlasMaker对打包的优化不好,容易打出很大的图集,很多部分都是浪费的,所有 ...
- form表单自动回车提交
对于使用了submit按钮的form表单,浏览器会直接建立回车与submit按钮之间的关联
- Oracle整形转字符串to_char()
使用to_char()将NUMBER转换为字符串: select to_char(AW_PROCESSSTATUS ) as PROCESSSTATUS from A
- python绘制很美丽的图表
或许你会觉得python不适合做图形界面的开发,的确如此.可是python却有一个非常美丽的图标模块:pycha,废话少说,先上图,各位看一下. 是不是效果还不错呢,当然这仅仅是一小部分图表,还有其它 ...
- FireDAC中的SQLite(二)
我们接下来将要使用FDDemo.sdb数据库进行访问,开始我们的第一个SQLite访问例子. 我们的FDDemo.sdb存放目录在:C:\Program Files (x86)\Embarcadero ...
- 微信小程序 - 授权页面
小程序授权方式更改以后,我们只有两种选择. 1.在主页使用遮罩层,类似这样的(会造成一点卡顿) 2.新增登陆授权页(经过反复的思考,我还是觉得用这个好) 这个也不错: https://blog.csd ...
- MySQL排序:SELECT ORDER BY
SELECT 和ORDER BY结合进行排序: products表例如以下: a 按产品名称列进行排序: b 按多个列进行排序,默认排序顺序为升序: c 指定排序方向,即指定为降序: d 对多个列进行 ...