20190902笔记

2.23/2.24/2.25 find命令

2.26 文件名后缀

2.27linux和windows互传文件

一、find命令

find用来搜索文件和目录,相似命令还有:

which (选项) (参数)

语法:whereis(选项)(参数)

选项:

定义:命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。

和find相比,whereis查找的速度非常快,这是因为Linux系统会将系统内的所有文件都记录在一个数据库文件中,当使用whereis和下面即将介绍locate时,会从数据库中查找数据,而不是像find命令那样,通过遍历硬盘来查找,效率自然会很高。但是该数据库文件并不是实时更新,默认情况下一星期更新一次,因此,我们在用whereis和locate查找文件时,有时会找到已经被删除的数据,或者刚刚建立的文件,却无法查到,原因就是因为数据库文件没有更新。

locate

定义:locate命令其实是‘find -name’的另一种写法,但是要比后者快的多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。

示例:

知识点:ctrl+u 删除光标前面的,ctrl+d 删除光标后面的,一个一个删除。光标前后什么都没有,ctrl+d退出终端,ctrl+a 光标挪到最前面,ctrl+e光标挪到最后

find基本语法:find(选项)(参数)

find path -option [-print]  [-exec -ok command]{}/;

选项:

参数

起始目录:查找文件的起始目录

示例:

列出当前目录及子目录下所有文件和目录

find .

在/home目录下查找以.txt结尾的文件名

find /home -name "*.txt"

同上,但忽略大小写

find /home -iname "*.txt"

当前目录及子目录下查找所有以.txt和.pdf结尾的文件

find . \( -name "*.txt" -o -name "*.pdf" \)

find . -name "*.txt" -o -name "*.pdf"

匹配文件路径或者文件

find /usr/ -path "*local*"

基于正则表达式匹配文件路径

find . -regex ".*\(\.txt|\.pdf\)$"

同上,但忽略大小写

find . -iregex ".*\(\.txt|\.pdf\)$"

找出/home下不是以.txt结尾的文件

find /home ! -name "*.txt"

根据文件类型进行搜索

find . -type 类型参数

类型参数列表:

查找/etc/目录下文件名包含‘ssh*’的所有文件

find /etc/ -type f -name "ssh*"

基于目录深度搜索

1.向下最大深度限制为3

find . -maxdepth 3 -type f

2.搜索出深度距离当前目录至少2个子目录的所有文件

find . -mindepth 2 -type f

根据文件时间戳进行搜索

find . -type f 时间戳

可以用‘stat’查看文件的三个时间戳,Unix/Linux文件系统每个文件都有三种时间戳:

搜索最近七天内被访问过的所有文件

find . -type f -atime -7

搜索恰好在七天前被访问过的所有文件

find . -type f -atime 7

搜索超过七天内被访问过的所有文件

find . -type f -atime +7

搜索访问时间超过10分钟的所有文件

find . -type f -amin +10

搜索最近七天内被访问过文件并且文件名为.conf

find . -type f -atime -7 -name "*.conf"

搜索最近七天内被访问过的文件或者名为.conf

find . -type f -o -atime -7 -o -name "*.conf"

找出比file.log修改时间更长的所有文件

find . -type f -newer file.log

根据文件大小进行匹配

find . -type f -size 文件大小单元

文件大小单元:

搜索大于10KB的文件

find . -type f -size +10k

搜索小于10KB的文件

find . -type f -size -10k

搜索等于10KB的文件

find . -type f -size 10k

删除当前目录下所有的.txt文件

find . -type f -name "*.txt" -delete

根据文件权限/所有权进行匹配,找出当前目录下搜索出权限为777的文件

find . -type f -perm 777

找出当前目录下权限不是644的php文件

find . -type f -name "*.php" ! -perm 644

找出当前目录用户tom拥有的所有文件

find . -type f -user tom

找出当前目录用户组sunk拥有的所有文件

find . -type f -group sunk

借助-exec选项与其他命令结合使用

找出当前目录下所有root的文件,并把所有权更改为用户tom

find . -type f -user root -exec chown tom {} \;

上例中,{}用于与-exec 结合使用来匹配所有文件,然后会被替换为相应的文件名

找出自己家目录下所有的.txt文件并删除

find $HOME/. -name "*.txt" -ok rm {} \;

上例中,-ok和-exec行为一样,不过它会给出提示,是否执行相应的操作

查找当前目录下所有的.txt文件并把他们拼接起来写入到all.txt文件中

find . -type f -name "*.txt" -exec cat {} \;> all.txt

将30天前的.log文件移动到old目录中

find . -type f -mtime +30 -name "*.log" -exec mv {} old \;

找出当前目录下所有的.txt文件并以‘File:文件名’的形式打印出来

find . -type f -name "*.txt" -exec printf "File: %s\n" {} \;

因为单行命令中-exec参数中无法使用多个命令,以下方法可以实现在-exec之后接受多条命令

-exec ./text.sh {} \;

查找当前目录或者子目录下所有.txt文件,但是跳过子目录sk

find . -path "./sk" -prune -o -name "*.txt" -print

find其他技巧收集

列出所有长度为零的文件

find . -empty

根据inode号查找所有相同inode号的文件

find . -inum  ‘inode号’

1.Find工具-name参数案例

2.Find工具-type参数案例

3.Find工具-size参数案例

4.Find工具-perm参数案例

5.Find工具-mtime参数案例

6.Find工具参数综合案例

二、文件名后缀

Linux系统是区分大小写的,后缀名并不代表它是什么样的文件。习惯的把相同的文件定义相同的后缀名,方便使用区分和查询

echo $LANG  查看系统默认语言

1.一谈到文件类型,大家就能想到Windows的文件类型,比如.txt、.doc、.sys、.mp3、.exe等,根据文件的后缀就能判断文件的类型。但在Linux中一个文件是否能被执行,和后缀名没有太大的关系,主要看文件的属性。但我们了解一下Linux文件的后缀名还是有必要的,特别是我们自己创建一些文件,最好还是加后缀名,这样做的目的仅仅是为了我们在应用时方便。现在的Linux桌面环境和Windows一样智能化,文件的类型是和相应的程序关联。我们打开某个文件时,系统会自动判断用哪个应用程序打开。

如果从这方面来说,Linux桌面环境和Windows桌面环境没有太大的区别。在Linux中,带有扩展名的文件,智能代表程序的关联,并不能说明文件是可以执行的,从这方面来说,Linux的扩展名没有太大的意义。

2.Linux的文件类型

Linux的文件类型常见的有:普通文件、目录、字符设备文件、块设备文件、符号链接文件等,这些文件虽然要用不同的程序打开,但放在Linux文件类型中衡量的话,大多是常规文件(也被称为普通文件)

普通文件

我们用ls -lh来查看某个文件的属性,可以看到有类似-rw-r-r-,值得注意的是第一的符号是-,这样的文件在Linux中为普通文件

这些文件一般是用一些相关的应用程序创建,比如图像工具、文档工具、归档工具等或cp工具等。这类文件的删除方式是用rm命令

目录

当我们在某个目录下执行,看到有类似drwxr-xr-x,这样的文件就是目录,目录在Linux中是个比较特殊的文件。注意它的第一个字符是d。

创建目录的命令可以用mkdir 命令,或cp命令,cp可以把一个目录复制成另一个目录。删除用rm或rmdir命令

字符设备或块设备文件

进入/dev目录,列出文件,如下:

我们看到/dev/tty的属性是crw-rw-rw-,注意第一个字符是c,这表示字符设备文件。比如猫等串口设备;我们看到/dev/hda1 的属性是 brw-r----,注意第一个字符是b,这表示块设备,比如硬盘、光驱等设备,这个种类的文件,是用mknode来创建,用rm来删除。目前在最新的Linux版本中,我们一般不用自己来创建设备文件。因为这些文件是和内核相关联的。

套接口文件

当我们启动MySQL服务器时,会产生一个mysql.sock的文件

注意这个文件的属性的第一个字符是s,了解即可。

符号链接文件

当我们查看文件属性时,会看到有类似 lrwxrwxrwx,注意第一个字符是l,这类文件是链接文件。是通过ln -s 源文件名 新文件名

上图是一个例子,表示setup.log是install.log的软链接文件。和Windows的快捷方式相似。

符号链接文件的创建方法举例:

3.常用的文件后缀名

三、linux和windows互传文件

在Xshell或者SecureCRT下使用,Putty不可用

安装插件

yum install -y lrzsz

Linux向Windows传输文件

sz 2.txt

弹出窗口,选择位置

Windows向Linux传输文件

rz

弹出窗口,选择位置

上传完毕后就会查看到刚才上传的文件(传输到当前目录)

注意:单独用rz会有两个问题:上传中断、上传文件变化(md5不同),解决办法是上传是用rz -be,并且去掉弹出的对话框‘Upload files as ASCII’前的勾选

-b binary 用binary的方式上传下载,不解释字符为ascii

-e 强制escape 所有控制字符,比如Ctrl+x,DEL的等

运行命令sz file1 file2就是发文件到Windows上(保存的目录是可以配置)比ftp命令方便多了,而且服务器不用再开FTP服务了

在SecureCRT还可以设置上传和下载的默认目录:

options->session options->file transfer 下可以设置上传和下载的目录

剩下的你只要在用SecureCRT登录Linux终端的时候:

发送文件到客户端:sz filename

zmodem接收可以自行启动

从客户端上传文件到Linux服务端:

只要服务端执行:rz

然后在SecureCRT里选文件发送,协议 zmodem

转载于:https://my.oschina.net/u/4093954/blog/3101031

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值