8 shell命令之find
find命令,像cd一样经常使用.只是可能大多数时间仅仅要那么一两个參数就足够使用了.或者说,勉强够用了.可是当我们主动的去翻看一下find的手冊,会发现原来更实用的功能都没实用到.
本文结合自己的使用对find进行简单的介绍.不保证全面,仅列出我在使用中受益颇多的选项.
find dir [option] 指定当前的一个文件夹进行查找.
option能够省略,假设省略的话,find会递归的列出当前文件夹下的全部文件.
经常使用的option有非常多,仅列出经常使用的一部分:
-name 指定文件名称,能够使用通配符,假设使用通配符的话,须要用双引號扩起来.
-type 指定文件的类型,可选的类型包含普通文件f 文件夹文件d 符号文件l 字符设备c 块设备b等.
-size 后面能够接+-N 接+N表示超出N指定大小的文件,-N表示小于N指定的大小.
-newer file 列出当前文件夹以及子文件夹中,新于指定file文件的
-mtime +-N 和size选项类似,+N表示改动时间老于指定的N*24消失.-N表示改动时间新于N*24消失.
-ctime +-N 同上,只是表示的是文件的状态改变的时间,注意find并没有所谓的按创建时间查找
-atime +-N 同上,查找的基准是訪问的时间.
-maxdepth 最大文件夹深度.指定了这个选项,能够避免find无止境的去遍历子文件夹.
-depth 这个选项的意思是处理完一个文件夹,再去遍历子文件夹.
-and 用于条件,能够指定多个条件,返回的结果是满足全部条件的文件
-or 同上,只是返回的是满足条件之中的一个的就可以.
! 放在选项前面,后面能够看到他的使用方法.用来指定不满足条件的文件.
-exec command [option] {} \; 非交互式运行命令,即将find找到的全部文件运行command.注意{}和\之间的空格.
-ok command [option] {] \; 交互式运行命令,将find找出来的文件运行command,可是会提示是否确认.
-delete 将查找出来的文件都删除.
以上应该就能够应付大多数的场景了.之所以用find事实上还有另外一个原因.是我不经意间发现的.当一个文件夹下文件较多的时候.可能你想这样运行命令:ls "*.txt" | xargs cat
看似没有问题的一条命令,却会错误发生.原因是文件太多了.无法用这个命令,这个时候find也会派上用场.想必find肯定有不一样的地方吧.
来看看find在实际中的应用吧.
1. 找出当前文件夹的普通非sh后缀的文件并运行cat
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3AzYWxhaQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
2. 列出非sh和txt后缀的文件
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3AzYWxhaQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
上面列举了两种可能的写法.注意!和选项之间一定要有空格,否则会报错.注意前后小括号与选项之间也要有空格,否则也会报错.
小括号的作用可能如今体现的不是非常明显.我一时也想不到详细的样例了.总之就是假设没有小括号,有一种场景,多个条件做过滤而且使用-exec选项的时候,-exec选项后面的command只运行最后一个指定选项过滤出来的文件.额,我遇到过这个问题.可是却想不出来场景了.羞愧.
3. 列出当前文件加下大于某个大小的文件
须要注意的是,当没有指定单位的时候,size后面的数字的单位是512byte的一个块.所以不要想当然的觉得是字节.
大致find的使用方法就总结这么多.肯定有非常多不全面的,好在find的选项理解起来并不难,所以对比这选项也能够写出语句来.
8 shell命令之find的更多相关文章
- Hadoop Shell命令大全
hadoop支持命令行操作HDFS文件系统,并且支持shell-like命令与HDFS文件系统交互,对于大多数程序猿/媛来说,shell-like命令行操作都是比较熟悉的,其实这也是Hadoop的极大 ...
- Shell命令和流程控制
Shell命令和流程控制 在shell脚本中可以使用三类命令: 1)Unix 命令: 虽然在shell脚本中可以使用任意的unix命令,但是还是由一些相对更常用的命令.这些命令通常是用来进行文件和文字 ...
- 在程序中执行shell命令
在linux系统下的操作中我们会经常用到shell命令来进行,一开始学习进程的时候对于shell命令也进行了思考,认为shell命令就是一个进程的外壳,经过了后来的学习对于这一点也有了更多的认识. 用 ...
- Linux远程执行Shell命令或脚本
## 远程执行shell命令 ssh [user]@[server] '[command]' # eg. ssh root@192.168.1.1 'uptime' ## 远程执行本地shell脚本 ...
- HBase基本shell命令
HBase基本shell命令 以下shell命令都是经过测试,正常展示,若有不足,还望指点! 1.创建表 create ‘表名称’,‘列族名称1’,‘列族名称1’create 'test_M_01', ...
- Linux SHELL 命令入门题目答案(一)
1.如何使用shell 打印 “Hello World!” (1)如果你希望打印 !,那就不要将其放入双引号中,或者你可以通过转义字符转义(2)echo 'hello world!' 使用单引号ech ...
- Linux SHELL 命令入门题目(一)
新年新气象,注重知识积累,提高手敲代码能力,而不是眼高手低,只会复制黏贴. 1.使用shell 打印 “Hello World!” 2.求变量'hello world'的字符长度 3.$0 .$SHE ...
- shell命令获取最新文件的名称
最近有一个需求,在部署游戏战场服时,从程序包到部署需要做一些本地化的操作,手工操作费时费力,故写一个shell脚本,一键部署. 遇到的问题是每次要部署最新的程序包,因此需要shell命令获取最新的文件 ...
- 【转】Hadoop FS Shell命令
FS Shell 调用文件系统(FS)Shell命令应使用 bin/hadoop fs <args> 的形式. 所有的的FS shell命令使用URI路径作为参数.URI格式是scheme ...
- [蟒蛇菜谱] Python封装shell命令
# -*- coding: utf-8 -*- import os import subprocess import signal import pwd import sys class MockLo ...
随机推荐
- Swift - 操作SQLite数据库(引用SQLite3库)
SQLite轻量级数据库在移动应用中使用非常普遍,但是目前的库是C编写的,为了方便使用,对SQLite相关的操作用Swift进行了封装.这个封装代码使用了一个开源项目SQLiteDB,地址是:http ...
- Wayland中的跨进程过程调用浅析
原文地址:http://blog.csdn.net/jinzhuojun/article/details/40264449 Wayland协议主要提供了Client端应用与Server端Composi ...
- Zxing中文乱码解决方法
Zxing中文乱码解决方法总结 尝试过非常多方法 最后发现此方法解决的乱码最多....... 在百度搜索二维码图片 经过前2页的測试 除开一张图之外 其余都能扫描出结果 假设大家有更好的解决方法 ...
- CMMI 是什么东西?
摘要: CMMI全称是Capability Maturity Model Integration,CMMI是个好东西来的,但行内人士对她的认识并不全面,甚至有种种的误解.尽管网上有很多CMM ...
- C++中的#pragma 预处理指令详解
源地址:http://blog.csdn.net/roger_77/article/details/660311 在所有的预处理指令中,#pragma 指令可能是最复杂的了,它的作用是设定编译器的状态 ...
- 函数式编程很难,这正是你要学习它的原因 | 外刊IT评论网
函数式编程很难,这正是你要学习它的原因 | 外刊IT评论网 函数式编程很难,这正是你要学习它的原因 156 次分享 新浪微博 腾讯微博 Tweet 人人网 QQ空间 很奇怪不是,很少有人每天都使用函数 ...
- hdu 4291 A Short problem(矩阵+取模循环节)
A Short problem Time Limit: 2000/1000 MS (J ...
- ubuntu/linux mint 创建proc文件的三种方法(四)
在做内核驱动开发的时候,能够使用/proc下的文件,获取对应的信息,以便调试. 大多数/proc下的文件是仅仅读的,但为了演示样例的完整性,都提供了写方法. 方法一:使用create_proc_ent ...
- poj 1991 Turning in Homework dp
这个可以证明必须从两边的任务开始交起,因为中间交的任务可以后面经过的时候再交,所以就变成了一个n*n的dp. #include <iostream> #include <cstdio ...
- Codeforces Round #246 (Div. 2) —B. Football Kit
B. Football Kit time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...