作用:用于匹配文件名(包括文件夹,但是不能匹配文件里的内容);用来模糊查找文件。
通常指包含四种“ * , ? , [ ] , { } ”字符的字符串。
具体见下图:
通配符 | 含义及作用 |
? | 代表一个字符,匹配一个字符 f?.txt |
* | 代表任意长度字符,匹配所有非隐藏的字符无论多长多短,但不匹配 "." 开头的文件,即隐藏文件 |
{1..10} | 1到10 |
{a..z} | a b c ...z |
{A..Z} | A B C .....Z |
[123]([此处括号里值代表一个字符]) | 取其中之一,有就显示,没有也无所谓 |
[a-z]单个小写字母 | 范围需要注意 |
[0-9]单个数字 | 匹配数字范围(0123456789) |
\ | 转义符,表示原来的意思 |
[[:lower:]] | 小写字母表示 a-z |
[[:upper:]] | 大写字母表示 A-Z |
[^xxx] | 匹配列表中的所有字符(xxx)以外的字符 |
[[:digit:]] | 任意数字,相当于0-9 |
[[:alpha:]] | 任意字母 |
运用实例如下图:
格式: mkdir [选项] [目录]
mkdir 命令除了可以创建单个空白目录外,还可以结合 -p 参数递归创建出具有嵌套关系的文件目录。
具体操作如下图所示:
格式: rmdir [选项] [目录]
rmdir 命令除了可以创建单个空白目录外,还可以结合 -p 参数递归删除具有嵌套叠层关系的文件目录。删除指定目录后,如果该目录的上层目录已变成空目录,就会将它一并删除。
注: 该命令只能删除空白目录哦
touch命令用于创建空文件或者设置文件的时间。
格式:touch [选项] [文件]
touch 新文件…(可为空) 文件名 如果不存在就是新建空文件。
touch 如果 touch 文件 后面跟的文件已存在,不会破坏已有文件 ,会刷新文件时间。
每个文件有三个时间戳:
access time 访问时间,atime,读取文件内容
modify time 修改时间,mtime,改变文件内容(数据)
change time 改变时间,ctime,元数据发生改变(元数据 文件大小 权限 )
硬连接 [(方法:ln+原始文件 + 硬链接重命名文件)] ------------> 同一个文件取不同的名或者叫多个名字,不支持文件夹,创建一个连接数加一,多路径访问。
软连接 [ 方法: ln -s 原始文件路径(相对于软连接的路径) 软链接后的路径(相当于快捷方式))] -------------> 类似于windows里快捷方式,软连接,符号连接,会指向原来的文件
对比项 | 硬链接 | 软链接 |
---|---|---|
本质 | 本质是同一个文件 | 本质不是同一个文件 |
inode(身份证号) | 相同 | 不同 |
连接数 | 创建新的硬链接,链接数会增加,删除硬链接,链接数减少 | 删除,新建都不会改变 |
文件夹 | 不支持 | 支持 |
删除源文件 | 只是链接数减一,但链接文件的访问不受影响 | 无法访问连接文件 |
文件类型 | 和源文件相同 | 链接文件,和源文件无关 |
文件大小 | 和源文件相同(指向硬盘上的同一个文件) | 源文件的路径的长度 |
查看当前所在文件夹占用了磁盘的多少单元块。
格式: du [选项] [文件或目录… ]
选项 | 说明 |
---|---|
-a | 统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录 |
-h | 以更人性化的方式(默认以KB计数,但不显示单位)显示出统计结果 |
-s(--summarize) | 只统计所占用空间总的(Summary)大小,而不是统计每个子目录、文件的大小 |
--max-depth=n (-d 1) | 最大显示到第n层,超过指定层数的目录后,予以忽略 |
--exclude | 不计入统计,略过指定的目录或文件 |
-b或-bytes | 显示目录或文件大小时,以byte为单位。 |
-c或--total | 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。 |
-D或--dereference-args | 显示指定符号连接的源文件大小。 |
-H或--si 与-h参数相同 | 但是K,M,G是以1000为换算单位。 |
-k或--kilobytes | 以1024 bytes为单位。 |
-m或--megabytes | 以1MB为单位。 |
--help | 显示帮助 |
--version | 显示版本信息 |
-l或--count-links | 重复计算硬件连接的文件。 |
-L<符号连接>或--dereference<符号连接> | 显示选项中所指定符号连接的源文件大小。 |
-X<文件>或--exclude-from=<文件> | 在<文件>指定目录或文件。 |
-x或--one-file-xystem | 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。 |
-S或--separate-dirs | 显示个别目录的大小时,并不含其子目录的大小。 |
注: a s无法同时使用
文件夹是可以嵌套的,有的时候,我们只想展示第一级或第二级子文件夹的信息,而不希望 du 统计的层次太深,那么我们可以用 --max-depth(-d) 选项来进行控制。包括隐藏文件也会统计。
cp命令用于复制文件或者目录。
格式:cp [选项] [源文件] [目标文件]
注:如果源文件是多个文件复制到目标文件,只能复制到文件夹(即目标文件是文件夹)
源文件复制到文件夹,需要使用 -r 选项,表示递归
会将源内容覆盖至目标文件,并且会询问是否覆盖它(提示覆盖的原因:是因为命令别名造成的,-i表示交互式,如果不想提示则目录起始点使用反斜杠)
执行正常的复制操作,会新建目标文件并将源内容填充到目标文件中
选项 | 说明 |
---|---|
-f | 覆盖目标同名文件或目录时不进行提醒,直接强制复制 |
-i | 覆盖目标同名文件或目录时提醒用户确认 |
-p | 复制时保持源文件的权限、属主及时间标记等属性不变 |
-r | 复制目录时必须使用此选项,表示递归复制所有文件及子目录 |
-a | 完整保留所有的信息 |
-v | 可视化 |
-u | 相当于增备,差异备份(只对文件夹起作用) |
mv命令用于剪切文件或将文件重命名。
格式:mv [选项] [源文件] [目标路径 | 目标文件名]
剪切操作不同于复制操作,因为它会默认把源文件删除掉,且保留剪切后的文件。如果在同一个目录中对一个文件进行剪切操作,其实也就是对其重命名。
选项:
-f:强制覆盖,如果目标文件已经存在,则不询问,直接强制覆盖;
-i:交互移动,如果目标文件已经存在,则询问用户是否覆盖(默认选项);
-n:如果目标文件已经存在,则不会覆盖移动,而且不询问用户;
-v:显示文件或目录的移动过程;
rm命令用于删除文件或者目录。
格式:rm [选项] [文件]
在Linux系统中删除文件时,系统会默认询问是否要执行删除文件,如果不想总看到这种反复的确认信息,可以在 rm 命令后跟上 -f 参数(选项)来强制删除。另外,想要删除一个目录,需要在 rm 命令后面加一个 -r 选项才可以,否则删不掉。
选项:
-f 强制
-i 交互
-r 递归(删除目录需要)
用来查找系统PATH目录下的可执行文件命令所在的位置。
格式:which [参数] [命令名称]
用于寻找二进制程序,源代码文件和man手册页等相关文件的路径。
格式:whereis [参数] [命令名称]
用于查找文件和目录。
格式:locate [参数] [文件名.zip]
特点:locate命令 要比 find-name 快的多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/mlocate/mlocate.db。这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,因此,我们在用 whereis 和 locate 查找文件时,有时会找到已经被删除的数据,或者刚刚建立的文件却无法查到,就是因为数据库文件没有被更新。所有我们在使用 locate 命令之前,需要利用 up-datedb 命令进行手动更新数据库。
用于按照指定条件查找文件。
格式:find [查找路径 | 范围] [寻找条件]
注: 如果没有查找路径或范围则就是当前目录的查找,寻找条件操作后面可以跟处理动作
find 命令属于精确查找。
常用选项:
查找类型 | 关键字 | 说明 |
---|---|---|
按名称查找 | -name | 根据目标文件的名称进行查找,允许使用“*”及“?”通配符 -iname "文件名称" 不区分大小写 |
按文件大小查找 | -size | 根据目标文件的大小进行查找一般使用“+”、“-”号设置超过或小于指定的大小作为查找条件常用的容量单位包括 kB(注意 k 是小写)、MB、GB |
按文件属主查找 | -user | 根据文件是否属于目标用户进行查找 |
按文件类型查找 | -type | 根据文件的类型进行查找文件类型包括普通文件(f)、目录(d)、块设备文件(b)、字符设备文件(c)等 |
按inode号 | -inum | 根据文件inode号查找 |
按权限查找 | -perm | 按文件权限查找 |
最大搜索目录深度 | -maxdepth level | 将你的文件已分级的形式查找 |
最小搜索目录深度 | -mindepth level | 同上 find /etc -maxdepth 2 -mindepth 2 |
按照属组来找 | -group | 匹配所有组 |
按照属主来找 | -user | 匹配所有者 |
按照无所有组来找 | -nogroup | 匹配无所有组的文件 |
按照无所有者来找 | -nouser | 匹配无所有者的文件,无主文件 |
拓展:
-exec......{} \; 后面可跟用于进一步处理搜索结果的命令
例子:
找到30天以上的大于1G的以 log 结尾的普通文件,并移动到/opt下
find / -mtime +30 size +1G -type f -name "*log" -exec mv {} /opt \