2.23 命令find(上)
1)which查找命令文件:在环境变量中查找相关命令的文件所在位置。
2)[root@localhost ~]# whereis ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
关于whereis:
NAME
whereis - locate the binary, source, and manual page files for a com‐
mand
3)locate:使用需要先安装,安装之后还需要配置
[root@localhost ~]#
yum -y install mlocate //安装方式
[root@localhost ~]# locate ls
locate: 无法执行 stat () `
/var/lib/mlocate/mlocate.db': 没有那个文件或目录 //需要产生".db"文件。文件列表的一个数据库。
[root@localhost ~]# updatedb //生成文件列表数据库文件,这是手动生成。默认会在每天凌晨四点自动生成一次。
[root@localhost ~]# locate 123 //查找到了相关文件。
/usr/lib/modules/3.10.0-693.el7.x86_64/kernel/drivers/media/dvb-frontends/cx24123.ko.xz
/usr/lib64/gconv/IBM1123.so
4)find:查找文件
组合键
“ctrl+l”:清屏
“ctrl+d”:退出一个终端。=exit或logout
“ctrl+c”:取消当前命令的执行。
“ctrl+u”:清空光标前的所有内容
“ctrl+k”:清空光标后的所有内容
“ctrl+e”:移动光标到行尾。
“ctrl+a”:移动光标到行首
[root@localhost ~]# find /etc/ -name "sshd_config"
/etc/ssh/sshd_config
[root@localhost ~]# find /etc/ -name "sshd*" //模糊查找,使用“*”通配符。文件目录都会被查找出来。
/etc/ssh/sshd_config
/etc/systemd/system/multi-user.target.wants/sshd.service
/etc/sysconfig/sshd
/etc/pam.d/sshd
指定查找文件类型:之前讲过的文件类型都可以在这里进行搜索(d,f,l,s,c,b)
[root@localhost ~]# find /etc/ -type d -name "sshd*" //查找目录
[root@localhost ~]# find /etc/ -type f -name "sshd*" //查找目文件
[root@localhost ~]# find /etc/ -type l
/etc/ssl/certs
/etc/grub2.cfg
[root@localhost ~]# ls -l /etc/ssl/certs //确实是软链接文件。
lrwxrwxrwx. 1 root root 16 5月 30 07:01 /etc/ssl/certs -> ../pki/tls/certs
[root@localhost ~]# find /dev/ -type b //块文件
/dev/sda1
[root@localhost ~]# ls -l /dev/sda1
brw-rw----. 1 root disk 8, 1 6月 1 21:13 /dev/sda1
//还比如/dev目录下还有“c”文件。
find 查找范围 -查找条件
2.24 命令find(中)
[root@localhost ~]#
stat 1 //查看文件的具体信息
文件:"1"
大小:19
块:0 IO 块:4096 目录
设备:803h/2051d
Inode:491 硬链接:2
权限:(0755/drwxr-xr-x) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2018-06-06 00:26:19.860876661 +0800
最近更改:2018-06-06 00:26:09.649927606 +0800
最近改动:2018-06-06 00:26:09.649927606 +0800 //主要看这里的三项
创建时间:-
find可能使用到的时间参数。这个部分对于文件或目录的测试执行方式类似的。所以我就选择使用目录来进行验证了。
-ctime:指
最近改动时间,修改的内容是指inode中记录的内容,比如权限,文件名,时间
-mtime:指
最近更改时间,修改了文件的具体内容,文件中的内容。(并且ctime会一起变动)
-atime:指
最近访问时间,对于目录,进入就算访问;对于文件,cat或vim查看,就算访问。
[root@localhost ~]# chmod 700 1
[root@localhost ~]# stat 1
文件:"1"
大小:19
块:0 IO 块:4096 目录
设备:803h/2051d
Inode:491 硬链接:2
权限:(0700/drwx------) Uid:( 0/ root) Gid:( 0/ root)
环境:unconfined_u:object_r:admin_home_t:s0
最近访问:2018-06-06 00:26:19.860876661 +0800
最近更改:2018-06-06 00:26:09.649927606 +0800
最近改动:2018-06-06 23:02:14.129878095 +0800
创建时间:-
为了查看明显:
[root@localhost ~]#
LANG=en
[root@localhost ~]# stat 1
File: '1'
Size: 19
Blocks: 0 IO Block: 4096 directory
Device: 803h/2051d
Inode: 491 Links: 2
Access: (0700/drwx------) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2018-06-06 00:26:19.860876661 +0800
Modify: 2018-06-06 00:26:09.649927606 +0800
Change: 2018-06-06 23:02:14.129878095 +0800
Birth: -
atime:例子
[root@localhost ~]# cd 1 //访问了目录
[root@localhost 1]# ls
a.txt abc
[root@localhost 1]# cd -
/root
[root@localhost ~]# stat 1
File: '1'
Size: 30
Blocks: 0 IO Block: 4096 directory
Device: 803h/2051d
Inode: 491 Links: 3
Access: (0700/drwx------) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2018-06-06 23:08:27.260335823 +0800 //atime发生变化
Modify: 2018-06-06 23:06:33.969586453 +0800
Change: 2018-06-06 23:06:33.969586453 +0800
Birth: -
举例:
[root@localhost ~]# find / -type f
-mtime -1 //
最近更改时间在一天以内的
[root@localhost ~]# find / -type f -mtime
+1 //最近更改时间在
一天以上的
[root@localhost ~]# find / -type f -
ctime -1 //
最近改动时间在一天以内的
[root@localhost ~]# find / -type f -ctime
+1 //最近改动时间在
一天以上的
[root@localhost ~]# find / -type f -
atime -1 //
最近访问时间在一天以内的
[root@localhost ~]# find / -type f -atime
+1 //最近访问时间在
一天以上的
[root@localhost ~]# find /etc -type f -mtime -1 -name "*.conf" //几个条件是“并且”关系。
/etc/resolv.conf
[root@localhost ~]# find /etc -type f -o -mtime -1 -o -name "*.conf"
//几个条件去“或者”关系。不过一般不会这么用。
2.25 命令find(下)
[root@localhost ~]# ln 1_heard.txt /tmp/1.txt.bak //创建硬链接
[root@localhost ~]# ls -l 1_heard.txt
-rw-r--r--.
2 root root 0 Jun 6 23:22 1_heard.txt //这里硬链接数为2
[root@localhost ~]# ls -i 1_heard.txt //查看该文件inode号
33576920 1_heard.txt
如果想要找到硬链接文件,那么只能通过inode号相同这一点查找。
[root@localhost ~]# find /
-inum 33576920 //这里是指“-inode number”。找文件硬链接
/root/1_heard.txt
/tmp/1.txt.bak
[root@localhost ~]# find /root/ -type f -
mmin -60 //一小时以内更改过的文件
/root/1_heard.txt
[root@localhost ~]# ls -l /root/1_heard.txt
-rw-r--r--. 2 root root 0 Jun 6
23:22 /root/1_heard.txt
[root@localhost ~]# date
Wed Jun 6
23:28:04 CST 2018
[root@localhost ~]# find /root/ -type f -mmin -60
-exec ls -l
{} \; //格式,”{}“表示前面命令列出的文件。也可以说是标准格式。
-rw-r--r--. 2 root root 0 Jun 6 23:22 /root/1_heard.txt
“-exec”是find的一个选项
[root@localhost ~]# find /root/ -type f -mtime -1
-exec cp {} {}.bak \; //拷贝
[root@localhost ~]# ls /root/
1 1_heard.txt 1_heard.txt.bak 2 anaconda-ks.cfg
[root@localhost ~]# find /root/
-type f -size +10k -exec ls -lh {} \; //查找文件大小大于10K的文件
-rw-r--r--. 2 root root 12K Jun 6 23:36 /root/1_heard.txt
2.26 文件后缀名
Linux下也是有后缀名的。但是并不像win一样,使用文件名后缀严格的指定文件格式。并不能代表文件类型。但是会习惯性的定义,比如文本文件定义为”.txt“,主配置文件”.conf“或”.cnf“等
[root@localhost ~]# date //查看系统时间
Wed Jun 6 23:42:37 CST 2018
[root@localhost ~]# echo $LANG //当前环境使用语言,英文。
en
[root@localhost ~]# echo $LANG //中文,需要在安装过程中,安装支持中文才可以。
zh_CN.UTF-8
2.27 Linux和win互传文件
之后会学习ftp、samba服务,实现在系统间传递。不过还可以
使用xhsell工具。
[root@localhost ~]# yum -y install
lrzsz //首先安装程序
然后操作:将Linux中的文件传到win上。
或者将win中的内容,传到Linux中:
对于主机正在使用的文件(打开中的文件),是无法实现传输的。
或者使用securecrt也是可以的。不过putty就不行了。
总结:
使用xshell程序,并且虚拟机安装”lrzsz“程序。
linux中的文件传输到win主机上:sz file
win主机上的文件传输到Linux中:rz //传到执行“rz”时所处的当前目录。