find命令、文件名后缀

文件搜索

which查找可执行文件的绝对路径

只能查询PATH环境变量中出现的路径下的可执行文件

//   查询可执行命令的绝对路径
[root@pan-128 4_6]# which ls
alias ls='ls --color=auto'
	/usr/bin/ls

whereis 查找文件

通过预先生成的一个文件列表库查找

  • whereis [-bms] [文件名称]
    • b : 只查找二进制文件
    • m: 只查找帮助文件(在man目录下的文件)
    • s : 只查找源代码文件
[root@pan-128 4_6]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz

locate查找

  • 安装
yum install  -y  mlocate
  • 生成或更新文件列表库

注意:服务器正在运行时,增大服务器压力。不适合精准搜索

  • 默认每天会自动更新
  • 也可以手动更新,命令如下:
updatedb

find查询

用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

使用场景:

  • 查找文件
  • 根据条件删除一些日志文件等。

常用快捷键:

  • ctrl l == clear 清屏,光标定位首行
  • ctrl d
    • 当前命令行有字符表示往前删一个字符
    • 当前命令行无字符时相当于执行exit;logout;
  • ctrl d 行内有内容时一次删一个后面的字符
  • ctrl c 强制中断执行
  • ctrl u 清除剪切光标之前的内容
  • ctrl k 清除剪切光标及光标之后的内容
  • ctrl a||← 光标行首
  • ctrl e||→ 光标行尾

find使用:

1、根据名字查找

find 路径 -name “文件名字 ”或“使用通配符 * ”(需加上) 只知道名字

[root@localhost ~]# ls
123.txt  anaconda-ks.cfg
[root@localhost ~]# find -name "123"
[root@localhost ~]# find -name "123.txt"
./123.txt
[root@localhost ~]# find -name "12*"
./123.txt
2.根据文件类型查找

find 路径 -type 文件类型 = d(目录) 、f(文件)、l(软链接文件)、s、c(字符串设备文件)、b(块设备文件)-name

[root@localhost ~]# ls
123.txt  234  234.txt  anaconda-ks.cfg
[root@localhost ~]# find -type d -name "23*"
./234
[root@localhost ~]# find -type f -name "23*"
./234.txt
3、根据时间查找
  • stat -filename (查看文件详细信息)
[root@localhost ~]# stat 234.txt
文件:"234.txt"
大小:0         	块:0          IO 块:4096   普通空文件
设备:803h/2051d	Inode:33574992    硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2018-06-09 07:29:23.763663795 +0800
最近更改:2018-06-09 07:29:23.763663795 +0800
最近改动:2018-06-09 07:29:23.763663795 +0800
创建时间:-
  • mtime(文件内容被变化会引起mtime的改变,例如追加)
  • ctime (文件大小变化会引起ctime改变,例如修改文件权限,只修改了inode号,所以mtime不会随着改变;更改属组,属主时间也会改变ctime)
[root@localhost ~]# chmod 700 234.txt
[root@localhost ~]# !stat
stat 234.txt
  文件:"234.txt"
  大小:0         	块:0          IO 块:4096   普通空文件
设备:803h/2051d	Inode:33574992    硬链接:1
权限:(0700/-rwx------)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2018-06-09 07:29:23.763663795 +0800
最近更改:2018-06-09 07:29:23.763663795 +0800
最近改动:2018-06-09 07:47:49.927496696 +0800
创建时间:-
  • atime (最近访问时间,通过cat head查看便会更改)

  • 按照时间属性查询常用示例:

    • 查找,根目录下, f 类型,一天以内mtime有变动的文件(+1:1天以前,-1:当天[一天内])
    	find / -type f -mtime[ctime、atime] -1
    
    • 查找,根目录下, f 类型,一天以内mtime有变动的,且文件名以conf结尾的文件
    	find / -type f -mtime[ctime、atime] -1 -name "*.conf"
    
    • 查找,根目录下, f 类型,小于60分钟内改动过,且文件名以txt结尾的文件
    	find / -type f -mmin -60 -name "*.txt"
    
  • find使用方法非常广,可以查天,年,月,日,分 还可以按列表形式显示

  • o 或条件,时间符合mtime -1 或者文件名称为 *.txt的

find /etc/ -type f -o -mtime -1 -o -name "*.txt"
4、查找硬链接

-inum 查找inode号

[root@localhost ~]# ln 234.txt /tmp/234_bak.txt
[root@localhost ~]# ll -i 234.txt
33574992 -rwx------. 2 root root 22 Jun  9 08:05 234.txt
[root@localhost ~]# find / -inum 33574992
/root/234.txt
/tmp/234_bak.txt
5、操作查找结果
  • exec 将查找到的文件进行进一步操作,结尾要加对";"转义

    • ls
    	[root@localhost ~]# find /root/ -type f -mmin -150 -exec ls -l {} \;
    	-rw-------. 1 root root 1418 Jun  9 07:06 /root/anaconda-ks.cfg.bak
    	-rwx------. 2 root root 22 Jun  9 08:05 /root/234.txt.bak
    
    • mv
    	[root@localhost ~]# find /root/ -type f -mmin -150 -exec mv {} {}.txt \;
    	[root@localhost ~]# find /root/ -type f -mmin -150 -exec ls -l {} \;
    	-rw-------. 1 root root 1418 Jun  9 07:06 /root/anaconda-ks.cfg.bak.txt
    	-rwx------. 2 root root 22 Jun  9 08:05 /root/234.txt.bak.txt
    
6、根据文件大小查找
  • size 可以查看 k(文件大小为k),M(文件大小为兆)

    • 查找,根目录下, f 类型,小于10k的文件,把查找到的结果显示出来
    	find / -type f -size -10k -exec ls -l {} \;
    

文件后缀名

1. 扩展名类型(一般都是按照约定定义名称)

基本上,Linux的文件是没有所谓的扩展名的,一个Linux文件能不能被执行,与他的第一栏的十个属性有关, 与档名根本一点关系也没有。这个观念跟Windows的情况不相同喔!在Windows底下, 能被执行的文件扩展名通常是 .com .exe .bat等等,而在Linux底下,只要你的权限当中具有x的话,例如[ -rwx-r-xr-x ] 即代表这个文件可以被执行。 不过,可以被执行跟可以执行成功是不一样的~举例来说,在root家目录下的install.log 是一个纯文本档,如果经由修改权限成为 -rwxrwxrwx 后,这个文件能够真的执行成功吗? 当然不行~因为他的内容根本就没有可以执行的数据。所以说,这个x代表这个文件具有可执行的能力, 但是能不能执行成功,当然就得要看该文件的内容. 虽然如此,不过我们仍然希望可以藉由扩展名来了解该文件是什么东西,所以,通常我们还是会以适当的扩展名来表示该文件是什么种类的。底下有数种常用的扩展名: *.sh : 脚本或批处理文件 (scripts),因为批处理文件为使用shell写成的,所以扩展名就编成 .sh *Z, *.tar, *.tar.gz, *.zip, *.tgz: 经过打包的压缩文件。这是因为压缩软件分别为 gunzip, tar 等等的,由于不同的压缩软件,而取其相关的扩展名! *.html, *.php:网页相关文件,分别代表 HTML 语法与 PHP 语法的网页文件。 .html 的文件可使用网页浏览器来直接开启,至于 .php 的文件, 则可以透过 client 端的浏览器来 server 端浏览,以得到运算后的网页结果。 基本上,Linux系统上的文件名真的只是让你了解该文件可能的用途而已,真正的执行与否仍然需要权限的规范才行。例如虽然有一个文件为可执行文件,如常见的/bin/ls这个显示文件属性的指令,不过,如果这个文件的权限被修改成无法执行时,那么ls就变成不能执行。 上述的这种问题最常发生在文件传送的过程中。例如你在网络上下载一个可执行文件,但是偏偏在你的 Linux系统中就是无法执行!呵呵!那么就是可能文件的属性被改变了。不要怀疑,从网络上传送到你的 Linux系统中,文件的属性与权限确实是会被改变的。

2. Linux文件名长度限制:

在Linux底下,使用预设的Ext2/Ext3文件系统时,针对文件名长度限制为: 单一文件或目录的最大容许文件名为 255 个字符 包含完整路径名称及目录 (/) 之完整档名为 4096 个字符 是相当长的档名!我们希望Linux的文件名可以一看就知道该文件在干嘛的, 所以档名通常是很长很长。

3. Linux文件名的字符的限制:

由于Linux在文字接口下的一些指令操作关系,一般来说,你在设定Linux底下的文件名时, 最好可以避免一些特殊字符比较好!例如底下这些:

    • ? > < ; & ! [ ] | \ ' " ` ( ) { } 因为这些符号在文字接口下,是有特殊意义的。另外,文件名的开头为小数点“.”时, 代表这个文件为隐藏文件!同时,由于指令下达当中,常常会使用到 -option 之类的选项, 所以你最好也避免将文件档名的开头以 - 或 + 来命名。

转载于:https://my.oschina.net/yolks/blog/1825572

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值