find命令和文件后缀名

find是搜索文件的命令,后面可以接参数,-type d是目录名,-type f是文件名,-type l是软连接文件。linux中还有其他的搜索命令,比如which,他是子PATH变量中搜索命令的绝对路径的命令,还有就是whereis和locate,但是搜索不全,它是在一个库中搜索文件,但是这个库要更新,如果不更新,文件是搜索不到的。所以这个命令不常用。
find的常用语法,find+路径+具体条件(-yupe)+文件类型(d:是目录名,f是文件名,l是软连接文件,c是字符串设备比如键盘,鼠标等,b是块设备文件)

find可以通过名字搜索,比如我们要搜索sshd_config这个文件,但是我们不知道路径,那么我们就可以这样搜索

find /etc/ -name "sshd_config"
/etc/ssh/sshd_config
这样我们就可以得到这个文件的绝对路径了。

我们也可以模糊索索,比如我们记不清楚文件的全名了,但是只记住前面几个字符,那么我们就可以进行模糊搜索
[[email protected] ~]# find /etc/ -name "sshd*"
/etc/ssh/sshd_config
/etc/systemd/system/multi-user.target.wants/sshd.service
/etc/sysconfig/sshd
/etc/pam.d/sshd
这样他就把所有名字带有sshd的文件名或者目录全部列出来了。

除了上面我们讲到的参数,还有其他的常用参数,比如atime、ctime、mtime。
其中atime是最近访问时间。
mtime是最近更改时间,这里面是更改内容的时间,。
ctime是最近改动时间,这里面是更改权限的时间,如果更改内容,所以ctime肯定会变。

如果我们要查询一下一天以内更改过的文件,我们可以这样做
[[email protected] ~]# find -type f -mtime -1 其中-1为一天以内,如果是+1,则是一天以上。
./.bash_history
./12.txt
./cp/1.log
./a.out
其中这些文件就是一天以内更改过的文件。
我们也可以在后面加多个判断条件
比如[[email protected] ~]# find -type f -mtime -1 -name “.conf”,这是并且的意思。
我么也可以改成或者的意思,只要我们在后面加参数-o,o表示or的意思。
find /etc/ -type f -o -ctime +1 -o -name "
.conf",这是或者的意思。

find也可以用inode号查找文件,后面加参数-inum就可以实现
[[email protected] ~]# find / -inum 33583036
/root/1.txt
/root/11.txt
从这里我们可以看出,这两个文件公用一个inode号,他们就互为硬链接文件。

find也可以按照小时来查找文件,在条件后面接参数-mmin
[[email protected] ~]# find / -type f -mmin -60
/cp/1.txt~
得出的结果就是在1小时内所改动的文件名。
如果我想得出的结果直接以ll查询的格式列出呢,那么我们就要在时间后面接选项-exec ll {} \;
[[email protected] ~]# find /root/ -type f -mmin -60 -exec ls -l {} \;
-rwxrwxrwx. 1 root root 137 1月 12 23:48 /root/12.txt
-rw-r--r--. 1 root root 423 1月 13 00:02 /root/cp/1.txt
其中{}表示你列取出来的文件,后面要加一个;,还要加一个\来转义一下。
我们也可以给文件加扩展名或者改名
先查询源文件
[[email protected] ~]# find /root/ -type f -mmin -100 -exec ls -l {} \;
-rwxr--r--. 2 root root 575 1月 14 21:26 /root/11.txt
-rwxr--r--. 2 root root 575 1月 14 21:26 /root/456.txt
然后输入命令
[[email protected] ~]# find /root/ -type f -mmin -100 -exec mv {} {}.bak \;
最后查询一下
[[email protected] ~]# find /root/ -type f -mmin -100 -exec ls -l {} \;
-rwxr--r--. 2 root root 575 1月 14 21:26 /root/11.txt.bak
-rwxr--r--. 2 root root 575 1月 14 21:26 /root/456.txt.bak
这样我们就发现每个文件名后面的扩展名就增加了bak这个扩展名。

还可以通过文件的大小来搜索文件,后面加参数size,比如我们要搜索大于10k的文件
[[email protected] ~]# find /root/ -type f -size +10k -exec ls -lh {} \;
-rw-------. 1 root root 14K 1月 13 22:49 /root/.bash_history
-rw-r--r--. 1 root root 12K 1月 7 22:09 /root/111/12_txt.swp
这样就可以了,我们也可以将后面的单位改为M,这里的M一定要是大写的,如果写小写会报错
[[email protected] ~]# find /root/ -type f -size +10m -exec ls -lh {} \;
find: 无效的 -size 类型“m”。

总结一下,find常用的参数有-type(条件)、-mtime(修改时间)、-name(按姓名查找)、size(按大小查找)、-o(或者)、-mmin(按分钟查找)、
-exec(用于调用并执行指令的命令)

常用快捷键:ctrl+l定位到首行
                    ctrl+d退出
                    ctrl+c终止命令
                    ctrl+u把前面的字符全部删除
                    ctrl+e把光标挪到最后
                    ctrl+a把光标挪到最前头

我们在使用linux中可以现,/root/2.txt、/root/111/12.txt、/root/12.txt、/root/cp/1.log、/root/cp/1.txt中有的是.txt,有的是.log。这说明linux中是有后缀名的,但是在linux中,这个后缀名并不代表这个文件的格式,比如说命令ls,我们也可以把它拷贝成.txt,那我们能用记事本打开它吗?后者说我们touch一个后缀名是doc的文件,那我们就能在windows中打开它吗?答案是不可以。所以zailinux中后缀名并不能代表这个文件的类型,我们可以自定义文件名,只是我们习惯把普通的文本文档的后缀名写成txt、log。有的文件后面还跟着gz,这是压缩衣文件,但是我们也可以把文件的后缀名写成gz,那我们能说这就是一个压缩文件吗?只不过我们习惯把相同类型的文件定义成相同的后缀名,方面我们去去分辨,这仅仅十个小约定而已。

原文地址:http://blog.51cto.com/13067688/2068349

时间: 2024-07-31 15:33:40

find命令和文件后缀名的相关文章

-05 08:57 ARCGIS地统计学计算文件后缀名为.shp文件制作

2011-07-05 08:57 ARCGIS地统计学计算文件后缀名为.shp文件制作 ARCAMP软件要进行地统计计算的文件后格式后缀名必须为.shp的文件,网上介绍的方法复杂难懂,那么制作.shp的文件怎么制作呢? 1.打开ArcMAP软件,点菜单栏“工具”下拉菜单中的“添加XY数据”,出现“添加XY数据”对话框,添加电子表格数据 “.dbf3”格式文件(参考“用ArcGIS9.3中标出地图中GPS点方法”第3点),点确定,GPS采集点出来了. 2.右单击图层栏刚才“添加XY数据”进来的文件

文件后缀名   、linux 和windows 互传文件 文件后缀名

文件后缀名   .linux 和windows 互传文件 文件后缀名 在linux 下面 命令 文件 都区分大小写 大写的 LS 就识别不了 ls 这个命令 LANG=en  就显示成英文 linux 和windows 互传文件 首相只能使用远程工具 xshell  .securecrt 首先安装一个包 yum install  -y lrzsz sz + 文件名   把linux 上的文件 传到  windows上 把 linux 上的 4.txt 传到windows 上 使用rz 回车 就可

手闲 用Lua写了个批量修改文件后缀名的小工具

1 --[[-- 2 - renameFilePostfix_: 统一重命名文件的后缀名 3 - @param: param1 - 原文件后缀名 4 - @param: param2 - 目的文件后缀名 5 - @param: param3 - 目的文件前缀名 6 - @param: param4 - 目的文件文件夹路径 7 - @param: param5 - 原文件路径 8 - @param: ... 9 - @param: paramn - 原文件路径 10 11 ]] 12 local

Linux下的文件及文件后缀名

1.使用扩展名的背景意义: 一谈到文件类型,大家就能想到Windows的文件类型,比如file.txt.file.doc.file.sys.file.mp3.file.exe等,根据文件的后缀就能判断文件的类型.但在Linux一个文件是否能被执行,和后缀名没有太大的关系,主要看文件的属性有关.但我们了解一下Linux文件的后缀名还是有必要的,特别是我们自己创建一些文件,最好还是加后缀名,这样做的目的是仅仅是为了我们的在应用时方便. 现在的Linux桌面环境和Windows一样智能化,文件的类型是

js 上传文件后缀名的判断 var flag=false;应用

js 上传文件后缀名的判断  var flag=false;应用 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> &

使用C语言获取文件后缀名的技巧

其实原来一直以为,C语言对于处理文件后缀名这种事是有点力不从心的(只能通过自己写一个小函数完成这种小需求),maybe C++可以有实现这种功能的STL或者类,但是因为本人对C++知之甚少,也就不在这里献丑了.今日上网本来想搜一段别人写好的代码片段,修改修改拿来用的,不过偶然在csdn论坛上有人提到了一个名叫_splitpath的c函数,貌似可以获取一个文件完整路径的各个部分,当然也包括后缀名了.既然有标准文件名处理函数,岂有不用之理.这里,小弟便为大家详解一下这个函数,以后有用到类似需求的时候

BAT-批量改文件后缀名

问题现象:在处理一个目录时,发现JPG文件都是以TMP文件命名的.双击打不开.要手动改一个为JPG. 问题处理: 1.新建一个TXT文件,内容写如下: ren *.tmp *.jpg 2.把TXT改为BAT文件后缀名. 3.把这个BAT文件放在要改后缀的文件同目录下面. 4.双击BAT文件就可以了.

VC获取文件后缀名

VC获取文件后缀名 2011-07-28 10:30:50|  分类: Visual C++ and O |  标签: |举报 |字号大中小 订阅 1. CString GetSuffix(CString strFileName) {         return strFileName.Right(strFileName.GetLength()-strFileName.ReverseFind('.')-1); }2.PathFindExtension3.忽略大小写方法 CString::Mak

分析复制文件,在复制过程中更改文件后缀名

这是我自己的做法: 将一个目录下的所有.java文件复制到另一个目录,但是要在复制的过程中更改文件后缀名. 思路:跟上一个一样,只是动作稍稍有一些不同,直接上代码 package pack; import java.util.*; import java.io.*; class CopyRenameFile{ public static void main(String[] args)throws IOException{ File dir=new File("E:\\JAVASE\\JAVA复