Linux的目录操作与查找文件

325 阅读7分钟

一、Linux常见的文件类型

1、常见七大类

  1. d 目录文件directory
  2. b 块设备文件block 块设备文件,就是保存大块数据的设备,比如最常见的硬盘。
  3. c 字符设备character 这些文件通常隐藏在 /dev/ 目录下,当进行设备读取或外设交互时才会被使用; 一个字符一个字符读取 /dev/zero (/dev/null)
  4. l 符号链接文件link
  5. p 管道文件pipe 主要用于进程间通信单向传输, 一个只读、另一个只写 ,其主要作用是解决多个程序同时存取一个文件所造成的错误。
  6. s 套接字文件socket 套接字文件一般隐藏在 /var/run/ 目录下,用于进程间的网络通信。(可以双向)
  7. “-” 普通文件 普通文件,包括纯文本文件、二进制文件、各种压缩文件等

2、颜色表示文件类型

  1. 黑色 普通文件
  2. 绿色 可执行文件
  3. 黄色 块设备文件
  4. 红色 压缩包
  5. 蓝色 文件夹
  6. 天蓝色 链接文件(快捷方式)

二、文件路径

Linux的目录结构为树状结构,而最顶级的目录为跟目录/。其他目录通过挂载添加到树中,也可以通过解除挂载移除。

这个跟目录/符号特别重要,因为这个涉及绝对路径和相对路径概念,这里必须要知道:

  • 绝对路径:路径由跟目录/写起,例如:/usr/share/doc这个目录。
  • 相对路径:就是相当于当前路径写起,这里主要涉及..这个硬链接符号,表示上一级目录,例如由/usr/share/doc要到/usr/share/man下面,可以用: cd ../man即可。

三、目录的常用命令。

1)IS

ls即list files,列出目录和文件名,这个比较容易,常用的选项参数有下面几个:

  • -a:全部的文件,包括隐藏文件一起都列出来。
  • -l:长数据串列出,包含文件属性、权限等等数据。
  • -R:递归显示,可以显示出文件夹下文件。

2)CD

cd即Change Directory,用来切换工作目录,其中目录在文章最开始时说了,可以使用绝对路径或者相对路径。

cd的命令: image.png

3)PWD

pwd即Print Working Directory,用来显示目前所在目录的命令,这个命令有个选项参数需要注意,就是-P显示出真实的路径,而非使用链接(link)的路径。

image.png

4)mkdir

mkdir即make directory,用来创建新目录,这个命令我们会经常使用,其中有2个选项参数比较常用:

-m:配置文件的权限,这样可以不需要在创建完再修改其默认权限。

-p:直接将所需的目录递归创建,这什么意思呢?我们正常可以使用mkdir a来创建a目录,但是不可以使用mkdir a/a来创建a/a目录,这时需要使用-p参数来递归创建。

image.png

5)touch

  • touch 文件名称(可为空)
  • touch 文件若已存在,不会破坏已有文件,会更新时间
  • touch {1..5}.文件格式 创建多个文件{}内可是数字或字母,重点是“..”

每个文件有三个时间戳:

  • access time 访问时间,atime,读取文件内容
  • modify time 修改时间,mtime,改变文件内容(数据)
  • change time 改变时间,ctime,元数据发生改变(文件大小、权限等属性)

image.png

image.png

image.png

6)ln 创建链接

硬链接

硬链接(hard link, 也称链接 )就是一个文件的一个或多个文件名, 把文件名和计算机文件系统使用的节点号链接起来。可以将它理解为一个 “指向原始文件 inode 的指针”, 系统不为它分配独立的 inode 和 文件。所以,硬链接文件与原始文件其实是同一个文件,只是名字不同。

硬链接引用的是文件在文件系统中的物理索引(也称为inode)。当移动或删除原始文件时,硬链接不会被破坏,因为它所引用的是文件的物理数据而不是文件在文件结构中的位置。硬链接的文件不需要用户有访问原始文件的权限,也不会显示原始文件的位置,这样有助于文件的安全。如果删除的文件有相应的硬链接,那么这个文件依然会保留,直到所有对它的引用都被删除。

注意:

  1. 硬链接只能对已存在的文件进行创建 。
  2. 不支持给目录创建硬链接;
  3. 不支持跨分区创建硬链接。
  4. 硬链接文件不占用存储空间。
  5. 修改源文件或者目标文件,对应另外一个文件也会发生相应修改。
  6. 删除源文件或者目标文件,对另外一个文件没有影响。

软连接

软链接又叫符号链接,这个文件包含了另一个文件的路径名。 可以是任意文件或目录,可以链接不同文件系统的文件。

注意事项:

  • 可对不存在的文件或目录创建软链接,可交叉文件系统。
  • 删除源文件无法访问,再新建同名文件后依然可以访问。

硬链接与软连接的区别

image.png

创建链接

ln命令格式:

  • ln 源文件 目标文件:创建硬链接文件
  • ln -s 源文件 目标文件:创建软连接文件

image.png

image.png

7)复制CP

cp命令格式

  • cp [选项]… 源文件 目标 相当改名复制
  • cp [选项]... 源文件... 目录 多个源文件只能复制到文件夹

image.png

8)MV 移动或改名

mv命令格式:

mv [选项] … 源文件或目录… 目标文件或目录

image.png 例:

image.png

如果源文件为多个,则目标必须是目录:

9、删除rm

rm(remove)命令格式:

rm [选项] 要删除的文件或目录

rm -f * 最经典的方法,删除当前目录下的所有类型的文件件

rm -f find . -type f 删除全部普通文件

rm -f 目标目录/* 删除指定目标目录内的文件

rm -rf 递归删除 删除目录,工作环境别用,危险

image.png 例:

image.png

当文件正在被其他人使用时,也是可以删除的,但是空间不会释放。其他人退出使用该文件后空间会被释放。

10、alias别名

临时修改(关机或退出终端会自动消失)

alias 命令别名 = ’命令‘

unalias 别名命令 删除别名

\加别名命令 (显示原始命令)

永久修改(需要修改配置文件)

在/etc/.bashrc 会影响全部

/root/.bashrc只影响当前用户

PS:命令执行顺序:绝对路径下的命令>别名命令>内部命令>hash命令>外部命令。

实际项目中需先查看其他人有没有定义别名命令。。

11、du统计所占磁盘大小

命令格式:

du [选项] [文件或目录… ]

image.png

例:

image.png

附加:通配符统计

image.png

image.png

四、查找文件

1)find

采用递归方式,根据目标的名称、类型、大小等不同属性进行精细查找。

命令的特点:

  • 精确查找
  • 实时查找
  • 支持查找条件很多
  • 各表达式之间使用逻辑运算符, “-a”表示而且(and),“-o”表示 或者(or)

find命令格式: find ... [路径] [条件] [处理]

image.png

按名字查找

[root@test1 opt]# find /etc/ -name passwd

按属性查找

[root@test1 opt]# find /mnt -user root

按文件类型查找

[root@localhost opt]# find /boot -type d

按目录层级查找

[root@localhost boot]# find /tmp/test -maxdepth 2 -mindepth 2

按文件权限查找

[root@localhost opt]# find -perm 644

按文件大小查找

[root@test1 opt]# find -size 1k 此处建议单位用的小一些好

按时间查找

#以“天”为单位: find -atime [+/-]#

find -mtime按文件内容改变时间查找

find -ctime按元数据改变时间查找

#以“分钟”为单位: -amin -mmin -cmin

比较“或”与“且”的优先级 o or ,a and

find /etc/ -type d -o -type l |wc -l 查找 etc文件夹下 目录和连接文件并统计数量

反向查找

find -not -[type name 等]

2)which

which 用来查看命令的位置。 在PATH变量指定的路径中,搜索某个系统命令的位置 。

命令格式:

which 命令/程序名

3)whereis

whereis 用来查找命令的具体位置。可以查看到二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。

五、总结 本章内容居多没什么好总结的,背下来就完事了。其中ls,cd,pwd,mkdir,touch,连接创建,cp,mv,rm,find等命令重点掌握。