文件管理

一、Linux下的文件系统

1.1 Windows和Linux组织文件区别

操作系统 方式
Windows: 以多根的方式组织文件 C:\ D:\ E:\
Linux: 以单根的方式组织文件 /

1.2 Linux下目录介绍

目录 用处
/bin-> /usr/bin 普通用户命令目录,如/bin/ls,RHEL7淘汰
/sbin -> /usr/sbin 管理员命令目录,只有超级管理员可以执行 ,如/sbin/service,RHEL7淘汰
/dev 设备文件,如/dev/sda , /dev/sr0 光驱设备, /dev/null
注意,该目录下的文件没有办法直接使用,必须先挂载
/root root用户的家目录,超级管理员登录后会自动切换到该目录
/home 普通用户家目录,用户登录后会自动切换到该目录
/proc 虚拟的文件系统,反应出来的是内核,进程信息或实时状态
/sys 虚拟的文件系统,类同proc,主要保存于内存相关的信息
/usr 系统文件目录,相当于C:\Windows
/usr/local 软件安装的目录,相当于C:\Program Files
/usr/bin 普通用户使用的应用程序
/usr/sbin 管理员使用的应用程序
/usr/lib 库文件Glibc
/usr/lib64 库文件Glibc
/boot 存放系统启动相关的文件,例如kernel,grub(引导转载程序)
/etc 各个软件的配置文件
/lib -> /usr/lib 库文件Glibc ,RHEL7淘汰
/lib64 -> /usr/lib64 库文件Glibc,RHEL7淘汰
/tmp 临时文件(所有用户都可以访问和写入,进程产生的临时文件)
/var 存档的是一些变化文件,比如数据库,日志,邮件,网站文件…
/media 挂载目录,早期Linux挂载目录,用于挂载光盘以及软盘媒体设备
/mnt 挂载目录,手工挂载设备的挂载点,用来挂载额外的设备,如 U 盘、移动硬盘和其他操作系统的分区
/opt 第三方软件目录,这个目录是放置和安装其他软件的位置,手工安装的源码包软件都可以安装到这个目录中,但也有人习惯把软件放到 /usr/local/ 目录中。
/run 正在运行的软件的程序目录

1.3 Linux下重要的配置/设备文件(面试重点)

  • /etc/rc.local:保存的是⽤户⾃定义开机引导启动的程序;
  • /etc/resolv.conf:域名解析,是DNS客户机的配置文件,用于设置DNS服务器的IP地址及DNS域名,还包含了主机的域名搜索顺序
  • /etc/hostname:存放主机名
  • /etc/hosts:本地域名解析文件
  • /etc/motd:开机自动打印文本内容
  • /etc/os-release:查看本机的版本信息
  • /proc/cpuinfo:处理器相关信息
  • /proc/meminfo:内存相关信息
  • /var/log/message:包括整体系统信息,其中也包含系统启动期间的日志
  • /dev/tty:终端文件
  • /dev/null:黑洞文件
  • /etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行,并从/etc/profile.d目录的配置文件中收集shell的设置;
  • /etc/bashrc:为每一个运行bash shell的用户执行此文件,当bash shell被打开时,该文件被读取
  • ~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,它设置一些环境变量,执行用户的.bashrc文件;
  • ~/.bashrc:该文件包含用于你的bash shellbash信息,当登录时以及每次打开新的shell时,该文件被读取;
  • ~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件;

1.4 Linux下文件命名规则

  • 理论上除了字符/之外,所有的字符都可以使用,但是,在目录名或文件名中,不建议使用特殊字符
  • linux严格区分大小写
  • 如果必须对文件名进行分割,建议使用_
  • 目录名或文件名的长度不能超过 255 个字符
  • 在Linux系统中,文件扩展名的用途为了使运维人员更好的区分不同的文件类型(后缀名本身不影响文件类型)
  • 文件名称一定要见名知意

1.5 文件定位路径

  • 绝对路径:从/开始的路径
  • 相对路径:从当前路径开始
    • 示例可查看上一节的cd命令

二、文件的属性

2.1 文件类型

2.1.1 文件类型查看(file/ll)

  • Linux下的文件类型并不由后缀名决定,后缀名仅仅是便于运维人员区别
  • 查看文件类型方式一:file 文件或目录名
[root@server1 ~]# file /dev/sda
/dev/sda: block special
[root@server1 ~]# file /dev/tty1
/dev/tty1: character special
root@server1 ~]# file /etc/hosts
/etc/hosts: ASCII text
[root@server1 ~]# file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=aaf05615b6c91d3cbb076af81aeff531c5d7dfd9, stripped
[root@server1 ~]# file dbt3_s1.sql
dbt3_s1.sql: ASCII text, with very long lines
[root@server1 ~]# file dbt3_s1.tar.gz
dbt3_s1.tar.gz: gzip compressed data, from Unix, last modified: Sat Aug  1 10:52:27 2015
[root@server1 ~]# file /
/: directory
  • 查看文件类型方式二:ls -l 文件或目录名 看第一个字符

2.1.2 文件类型对应字母说明

文件类型对应字符 解释
- 普通文件(文本文档,二进制文件,压缩文件,电影,图片。。。)
d (dictory) 目录文件(蓝色)
b (block) 块设备文件(块设备)存储设备硬盘,U盘。例如:/dev/sda,/dev/sda1
c (char) 字符设备文件(字符设备)打印机,终端。例如/dev/tty1,/dev/zero
s (socket) 套接字文件
p (pipe) 管道文件
l (link) 链接文件(淡蓝色)

2.2 文件时间

2.2.1 Linux下文件的三种时间

  • linux文件时间有3种状态
简名 全名 中文名 含义
atime access time 访问时间 文件中的数据最后被访问的时间
mtime modify time 修改时间 文件内容被修改的最后时间
ctime change time 变化时间 文件的元数据发生变化。比如权限,所有者等
  • ll [--full-time#详细时间]命令默认显示的是修改时间mtime

2.2.2 如何查看(stat 文件名)

  • 时间戳:1970年1月1日0点0分0秒到现在的秒数
[root@server1 ~]# stat anaconda-ks.cfg File: ‘anaconda-ks.cfg’Size: 1246        Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 33574978    Links: 1
Access: (0600/-rw-------)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2022-05-15 14:41:19.900999772 +0800
Modify: 2022-05-15 14:41:19.900999772 +0800
Change: 2022-05-15 14:41:19.900999772 +0800Birth: -文件:‘anaconda-ks.cfg’大小:1246 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:33574978 硬链接:1
权限:(0600/-rw-------) Uid:( 0/ root) Gid:( 0/ root)
最近访问:2022-05-15 14:41:19.900999772 +0800 atime查看内容
最近更改:2022-05-15 14:41:19.900999772 +0800 mtime修改内容
最近改动:2022-05-15 14:41:19.900999772 +0800 ctime文件属性,比如权限
创建时间:-

2.2.3 如何修改三种时间

  • 参见下文 3.1.2 touch命令的参数

2.3 文件inode与链接数

2.3.1 inode介绍(等到磁盘管理章节还会细讲)

  • 格式化一块硬盘后会分文三个部分:

    • 超级块(superblock):会存放文件系统filesystem的整体信息,包括inode/block的总量、使用量、剩余量, 以及文件系统的格式与相关信息等
    • 索引节点(inode)
      • 记录文件的属性,如文件的权限,大小,修改时间,所有者等等。
      • 一个文件占用一个inode,同时记录此文件的数据所在的block 号码。
      • 默认一个inode表格128字节一个block记录消耗4B,记录满了后会新建inode用于扩展。
    • 数据块(block):真正用于存放数据的地方
  • 如果我要查看file1文件内容,系统并不是按照文件名去查找,而是根据inode去查找。
    • 具体流程:打开file1–>查看inode–>找到inode对应的数据块–>读取

2.3.2 查看inode号

# 查看文件的inode
[root@server1 tmp]# ll -i
总用量 0
16784325 -rw-r--r-- 1 root root 0 8月  21 12:11 file1# 查看文件系统的inode所占空间大小
[root@server1 tmp]# df -ih
文件系统                Inode 已用(I) 可用(I) 已用(I)% 挂载点
devtmpfs                 225K     399    225K       1% /dev
tmpfs                    228K       1    228K       1% /dev/shm
tmpfs                    228K     743    227K       1% /run
tmpfs                    228K      16    228K       1% /sys/fs/cgroup
/dev/mapper/centos-root  8.5M     39K    8.5M       1% /
/dev/sda1                512K     334    512K       1% /boot
tmpfs                    228K       1    228K       1% /run/user/0

2.3.3 硬链接

  • 硬链接hard link,称inode相同的两个文件互为硬链接

    • 本质:硬链接实际上是指向原文件inode的指针,每添加一个硬链接,该文件的inode连接数就会增加1
  • 特点(面试高频)

    • 不论是修改源文件,还是修改硬链接文件,另一个文件中的数据都会发生改变。

      • 因为查找文件是通过inode号找到数据块,所以互为硬链接的两个文件本质上是同一个文件
    • 不论是删除源文件,还是删除硬链接文件,只要还有一个文件存在,这个文件都可以被访问
      • 即删除一个文件,不会影响其他硬链接文件;且只有当该文件的inode连接数为0时,才算彻底将它删除
    • 硬链接不会建立新的 inode 信息,也不会更改 inode 的总数。
    • 硬链接不能跨文件系统(分区)建立,因为在不同的文件系统中,inode 号是重新计算的
    • 硬链接不能链接目录(否则可能会打破文件系统目录的有向无环图结构,可能创建目录循环)
  • 创建硬链接

    • 语法:ln [选项] file1 hardlink_name 创建file1的硬链接
  • 示例

[root@server1 tmp]# ln file1 h_file1
[root@server1 tmp]# ll -i
总用量 0
16784325 -rw-r--r-- 2 root root 0 8月  21 12:11 file1
16784325 -rw-r--r-- 2 root root 0 8月  21 12:11 h_file1

2.3.4 软链接

  • 软链接symbolic link,也称为符号链接

    • 概述:仅仅包含所链接文件的路径名,因此能链接目录文件,也可以跨越文件系统进行链接。但是,当原始文件被删除后,链接文件也将失效,从这一点上来说与Windows系统中的“快捷方式”具有一样的性质
    • 实质:一个保存源文件名和inode号的新文件
  • 查找文件流程:

    • 打开软链接–>找到链接文件block中存储的源文件inode–>找到inode对应的数据块–>读取
  • 特点(面试高频)

    • 不论是修改源文件(check),还是修改软链接文件(check-soft),另一个文件中的数据都会发生改变

    • 删除软链接文件,源文件不受影响。而删除原文件,软链接文件将找不到实际的数据,从而显示文件不存在

    • 软链接会新建自己的 inode 信息和 block,只是在 block 中不存储实际文件数据,而存储的是源文件的文件名及inode号

    • 软链接可以链接目录

    • 软链接可以跨分区

    • 软连接与源文件不是同一个文件

  • 创建软链接

    • 语法:ln -s file1 link_name 创建file1的软链接
# 创建
[root@server1 tmp]# touch file1
[root@server1 tmp]# ln -s file1 sl_file1
[root@server1 tmp]# ll -i
#总用量 0
16784325 -rw-r--r-- 1 root root 0 8月  21 12:11 file1  # 发现链接数不变,inode不一致
17184545 lrwxrwxrwx 1 root root 5 8月  21 12:16 sl_file1 -> file1# 删除
[root@server1 tmp]# unlink sl_file1
[root@server1 tmp]# ls
file1

2.4 文件大小

  • 即文件所占磁盘的空间大小
  • 查看方式一:通过ll [-h]查看

  • 查看方式二:通过stat命令查看

  • 后续还会有统计文件字节数wcdu等方式

2.5 文件权限(参看下一章用户与权限管理部分)

三、文件的增删改查

3.1 创建相关

3.1.1mkdir命令

  • 语法: mkdir [选项] dirname

  • 功能:make directory,在当前目录下创建一个名为 “dirname”的目录

  • 常用选项:

    • -p:递归创建文件夹,例如mkdir -p /a/b/c/d,其中/a、/a/b、/a/b/c可不存在
    • -v:打印创建过程提示信息
  • 示例

# mkdir dir1  #当前目录下创建目录dir1
# mkdir /home/dir2 /tmp/dir3 #不同路径下同时创建多个目录
# mkdir /home/{dir4,dir5}  #同一路径下同时创建多个目录
# mkdir -v /home/{dir6,dir7} # 显示操作的消息
# mkdir -pv /home/dir8/111/22 # 创建目录和其所有父层目录
# mkdir -pv /home/{abc/{dir1,111},efg}
  • 常见报错
[root@server1 ~]# mkdir /usr/local/nginx/conf
mkdir: 无法创建目录"/usr/local/nginx/conf": 没有那个文件或目录# 解决方案:使用-p选项,同时创建多级目录
[root@server1 ~]# mkdir -p /usr/local/nginx/conf

3.1.2 touch命令

  • 语法:touch [选项] 文件名1 文件名2 … 文件名n
  • 功能:新建一个不存在的文件或更改文档或目录的日期时间
  • 常用选项:
参数 说明
-a
–time=atime
–time=access
–time=use
只更改存取时间。没有指定时间字符串默认为当前时间。atime和ctime改变
-m
–time=mtime
–time=modify
只更改变动时间。没有指定时间字符串默认为当前时间 。mtime和ctime改变
-d 使用指定的日期时间,而非现在的时间,默认创建文件就是当前时间。atime和mtime改变
-f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题
-c–no-create 不建立任何文档
-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同
-t 使用 [[CC]YY]MMDDhhmm[.ss] 世纪年月日分时秒方式的时间戳来指定创建文件的时间
也可以改变已存在文件的时间(atime和mtime改变)
  • 示例一:创建文件
# touch file1  # 无则创建,有则修改时间
# touch file2 file3
# touch /home/file4
# touch file{a..d}
# touch file{e,f}
  • 示例二:修改时间
#创建文件时,使用指定日期时间而不是默认当前时间
[root@server1 test]# touch -d "2022-02-02 11:11:11" file1
# atime和mtime改变了
[root@server1 test]# stat file1 File: ‘file1’Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d    Inode: 34146683    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2022-02-02 11:11:11.000000000 +0800
Modify: 2022-02-02 11:11:11.000000000 +0800
Change: 2022-05-15 18:26:37.783999995 +0800            Birth: -
[root@server1 test]# ll
total 0
-rw-r--r-- 1 root root 0 Feb  2 11:11 file1# 使用-a参数改变访问时间:
[root@server1 test]# touch -a file1
# atime和ctime改变了
[root@server1 test]# stat file1         File: ‘file1’Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d    Inode: 34146683    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2022-05-15 18:28:03.068999985 +0800
Modify: 2022-02-02 11:11:11.000000000 +0800
Change: 2022-05-15 18:28:03.068999985 +0800Birth: -# 使用-m参数改变Modify时间:
[root@server1 test]# touch -m file1
# mtime和ctime改变了
[root@server1 test]# stat file1 File: ‘file1’Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d    Inode: 34146683    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2022-05-15 18:28:03.068999985 +0800
Modify: 2022-05-15 18:29:14.646999976 +0800
Change: 2022-05-15 18:29:14.646999976 +0800Birth: -# -t参数指定时间戳:
[root@server1 test]# touch -t 202211111111.11 file1
# atime和mtime改变了
[root@server1 test]# stat file1 File: ‘file1’Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d    Inode: 34146683    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2022-11-11 11:11:11.000000000 +0800
Modify: 2022-11-11 11:11:11.000000000 +0800
Change: 2022-05-15 18:30:04.822999970 +0800Birth: -

3.2 删除相关

3.2.1 rmdir命令

  • 语法: rmdir [-p] dirName
  • 功能:删除空目录,非空则必须先清空
  • rmdir是一个与mkdir相对应的命令。 mkdir是建立目录,而rmdir是删除目录。参数同mkdir
  • 示例
# rmdir dir1  #当前目录下删除空目录dir1
# rmdir /home/dir2 /tmp/dir3 #不同路径下同时删除多个空目录
# rmdir /home/{dir4,dir5}  #同一路径下同时删除多个空目录
# rmdir -v /home/{dir6,dir7} # 显示操作的消息
# rmdir -pv /home/dir8/111/22 # 删除目录和其所有父层目录(常常失败,因为父级目录非空)

3.2.2rm命令

  • 语法: rm [选项] dirName/filename

  • 功能:可以同时删除文件或目录

  • 常用选项:

    • rm -rf 即使文件属性为只读(即写保护),亦直接删除,强制递归删除,删库跑路的指针,慎用

    • rm -i 删除前逐一询问确认

    • rm -r 删除目录及其下所有文件,递归删除文件

  • 示例

# rm -rf file1  #删除文件file1
# rm -rf dir1 #删除目录dir1
# rm -rf file{a..d} #删除文件filea,fileb,filec,filed
# rm -rf *.cpp #删除以.cpp结尾的文件
# rm -rf file* #删除以file开头的文件选项说明:
-r :针对文件夹,代表递归删除,先把目录下的所有文件删除,然后在删除文件夹
-f :强制删除,不提示
*  :表示所有通配符的一种

3.3 移动相关

3.3.1 cp命令

  • 语法:cp [选项] 源文件或目录 目标文件或目录
  • 功能:复制文件或目录
  • 说明:cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息。
  • 常用选项:
参数 说明
-f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
-i 或 --interactive 覆盖文件之前先询问用户
-r 递归处理,将指定目录下的文件与子目录一并处理
若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理
-R 或 --recursive 递归处理,将指定目录下的文件及子目录一并处理
-v 显示操作过程
  • 示例
# cp -v file01.txt /home/dir01/ #本目录下的file01.txt复制到/home/dir01/
# cp readme.txt /tmp/readme.txt.bak #复制后重命名
# cp -r /home/ /tmp/ 把home目录连通其内部的文件统一复制到/tmp目录下

3.3.2 mv命令

  • 语法: mv file1 file2
  • 功能:用于移动文件或改名
  • 示例
# mv file1 /home/dir3  # 将file1移动到/home/dir3
# mv file2 /home/dir3/file20 # 将file2移动到/home/dir3,并且改名 file20
# mv file3 file30  # 将file3改名为file30

3.4 查看文件内容相关

3.4.1 cat命令

  • 语法:cat [选项] filename
  • 功能:正序输出文件的内容
  • 示例
#cat file1#cat -n file1#cat file1 file2 > file3 #将file1,file2合并到file3中选项说明:
-n:显示行号

3.4.2 tac命令

  • 语法:tac filename
  • 功能:倒序输出文件的内容
  • 示例:
# tac file1

3.4.3 head命令

  • 语法:head [选项] filename
  • 功能:查看一个文件的前n 行,默认显示前10 行
  • 示例:
# head -2 /etc/passwd     #查看前两行

3.4.4 tail命令

  • 语法:tail [选项] filename
  • 功能:查看一个文件的后n 行,默认显示后10 行
  • 示例:
# tail -1 /etc/passwd     #查看最后一行
# tail -f /var/log/secure   # 动态查看文件尾部,常用于查看日志

3.4.5 more命令

  • 语法:more [选项] filename
  • 功能:分屏显示文件内容
  • 注意:more打开文件时会把文件的全部内容加载到内存中,如果文件较大,可能会出现卡顿情况,不推荐使用
  • 示例:
# more 文件名
交互操作 作用
Enter回车 向下移动一行
d 向下移动半页
space空格 向下移动一页
b 向上移动一页,后期引入功能,早期more只能前进不能后退
q 退出

3.4.6 less命令

  • 语法:less [选项] filename
  • 功能:分屏显示文件内容
  • 注意:less加载文件,是一点一点的进行加载的。相较more,读取大文件时,效率比较高。且more阅读完后,会将阅读内容显示在终端,而less不会,相对安全一些(推荐)
  • 示例
# less 文件名
# less -N 文件名
选项说明:
-N:显示行号
交互操作 作用
Enter回车 向下移动一行
d 向下移动半页
space空格 向下移动一页
b 向上移动一页
上下方向键 向上与向下移动,less命令特有功能键
/ 字符串 搜索
q 退出

3.5 查看目录结构

3.5.1 tree命令

  • 语法:tree dirname
  • 功能:将目录及其之下的文件/目录以树状形式展示
  • 示例
# 默认未安装,需要先安装
[root@server1 ~]# yum install -y tree
[root@server1 ~]# tree /tmp
/tmp
├── mysql.sock
└── mysql.sock.lock# 不加默认是当前目录
[root@server1 ~]# tree
.
├── anaconda-ks.cfg
├── dbt3_s1.sql
├── dbt3_s1.tar.gz
└── hard_link

四、文件的压缩与解压

4.1 tar命令

4.1.1 打包

  • 默认情况下,Linux一次只能压缩一个文件,无法压缩多个文件或文件夹。所以需要提前对多个文件或文件夹进行打包,然后压缩。

  • 用法:

# tar -cvf abc.tar a.txt b.txt c.txt #把a.txt、b.txt、c.txt文件打包到abc.tar文件中# tar -tf abc.tar #查看tar包中的文件信息# tar -cvf wechat.tar wechat #把wechat文件夹进行打包wechat.tar
选项说明:
-c :打包
-f :filename,打包后的文件名
-v :显示打包的进度
-t :查看打包的文件内容

4.1.2 压缩

  • 用法:
# tar [选项]  压缩后的压缩包名称  要压缩的文件或文件夹
选项说明:
cf :对文件或文件夹进行打包
-v  :显示压缩进度
-z  :使用gzip压缩工具把打包后的文件压缩为.gz
-j  :使用bzip2压缩工具把打包后的文件压缩为.bz2
-J  :使用xz压缩工具把打包后的文件压缩为.xz压缩速度:gzip > bzip2 > xz
压缩率:gzip < bzip2 < xz# tar -zcf abc.tar.gz a.txt b.txt c.txt #把a.txt、b.txt、c.txt文件打包并压缩为abc.tar.gz# tar -zcf wechat.tar.gz wechat #把wechat文件夹压缩为wechat.tar.gz格式的压缩包

4.1.3 解压

  • 用法:
# tar [选项]  压缩后的压缩包名称  要压缩的文件或文件夹
选项说明:
xf :对文件或文件夹进行解包
其他同压缩# tar -zxf abc.tar.gz #把abc.tar.gz解压

4.2 zip&unzip

4.2.1 zip压缩

  • 用法:
# zip abc.zip a.txt b.txt c.txt
# zip -r wechat.zip wechat选项说明:
-r :递归压缩,主要针对的是文件夹

zip格式在Windows和Linux中可以通用

4.2.2 unzip解压缩

  • 用法
# unzip 压缩包名称        -->     解压到当前目录
# unzip 压缩包名称 -d 指定路径       -->   解压到指定路径下

五、文件的查找

5.1 which

  • 语法:which filename
  • 功能:在环境变量$PATH设置的目录里查找符合条件的文件
  • 示例
[root@server1 ~]# which poweroff
/usr/sbin/poweroff
[root@server1 ~]# which ls
alias ls='ls --color=auto'/usr/bin/ls

5.2 locate

  • 语法:locate filename
  • 功能:locate 要搜索的文件或目录名,非实时的从数据库里快速搜索文件或目录
  • 示例
[root@server1 ~]# yum -y install mlocate  #安装locate
[root@server1 ~]# updatedb  # 更新数据库
[root@server1 ~]# locate /etc/hosts # 查找/etc目录下名字包含hosts的文件
/etc/hosts
/etc/hosts.allow
/etc/hosts.deny[root@server1 ~]# locate hosts # 查找所有名字包含hosts的文件
...
  • 默认情况下,locate数据库会忽略某些文件夹,可以在配置文件中修改
[root@server1 ~]# cat /etc/updatedb.conf
PRUNE_BIND_MOUNTS = "yes"
PRUNEFS = "9p afs anon_inodefs auto autofs bdev binfmt_misc cgroup cifs coda configfs cpuset debugfs devpts ecryptfs exofs fuse fuse.sshfs fusectl gfs gfs2 gpfs hugetlbfs inotifyfs iso9660 jffs2 lustre mqueue ncpfs nfs nfs4 nfsd pipefs proc ramfs rootfs rpc_pipefs securityfs selinuxfs sfs sockfs sysfs tmpfs ubifs udf usbfs fuse.glusterfs ceph fuse.ceph"
PRUNENAMES = ".git .hg .svn"
PRUNEPATHS = "/afs /media /mnt /net /sfs /tmp /udev /var/cache/ccache /var/lib/yum/yumdb /var/spool/cups /var/spool/squid /var/tmp /var/lib/ceph"

5.3 find

5.3.1 find查找文件

  • 语法:find dirname [选项] filename [选项] [处理动作]
  • 功能:查找指定目录下的文件
  • 选项说明:
参数 说明
-name 指定文件名,支持*通配符
-type f代表普通文件、d代表文件夹
-mtime 指定修改时间,默认单位为天
-size 指定文件大小,常用单位k,M,G
-iname 按照名字,忽略大小写
-user 按照所有者
-group 按照所属组
-perm 按照文件权限
-a 多个条件and并列
-o 多个条件or并列
-not 条件取反

5.3.2 找到后的处理动作

-print
# 默认的处理动作,显示至屏幕
-ls
# 类型于对查找到的文件执行“ls -l”命令
-delete
# 删除查找到的文件
-fls /path/to/somefile
# 查找到的所有文件的长格式信息保存至指定文件中
-ok COMMAND {}\
# 对查找到的每个文件执行由COMMAND指定的命令
# 对于每个文件执行命令之前,都会交换式要求用户确认
-exec COMMAND {} \
# 对查找到的每个文件执行由COMMAND指定的命令
{}
# 用于引用查找到的文件名称自身

注意:find传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性传递给后面的命令;另 一种方式可规避此问题 find | xargs COMMAND

  • 示例
# 通过文件名搜索文件
# find /etc -name "*.conf"
# find /etc -name "*.conf" -type f
# find ./ -name "*.txt" | xargs rm -rf 找到并删除# 通过文件修改时间搜索文件
# find ./ -name "*.txt" -mtime +3 搜索三天前修改的文件(今天为25号,搜索的为22号之前的文件,不包含22号的文件)
# find ./ -name "*.txt" -mtime -3 搜索三天内修改的文件(今天为25号,搜索的为25.24.23号的文件)# 通过文件大小搜索文件
# find /root -type f -size 5M  搜索/root目录下大小为5M的文件
# find /root -type f -size -5M 搜索/root目录下小于5M的文件
# find /root -type f -size +5M 搜索/root目录下大于5M的文件# 删除修改时间超过60分钟的.log格式的文件
# find / -type f -mmin +60 -name "*.log" -exec rm -f {} \;

三、Linux文件管理相关推荐

  1. 云计算实战系列三(Linux文件管理)

    文件管理 1.Linux目录结构 1.1 WINDOWS/LINUX 对比 Windows: 以多根的方式组织文件 C:\ D:\ E:\ Linux: 以单根的方式组织文件 / 1.2 简介 /目录 ...

  2. Linux用户管理(三)Linux文件管理

    Linux文件管理 一.文件系统及Shell的基本概念 1.文件系统的含义 文件系统是用来管理和组织保存在磁盘驱动器上数据的系统软件 2.Linux的文件系统 Linux系统采用虚拟文件系统技术(VF ...

  3. Linux的概念与体系 2. Linux文件管理(转载)

    Linux文件管理 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 对于计算机来说,所谓的数据就是0和1的序列.这样的一个序列可以 ...

  4. linux 文件管理器_8个Linux文件管理器尝试

    linux 文件管理器 最终用户和管理员都需要执行的最常见的管理任务之一是文件管理. 管理文件会占用您的大部分时间. 定位文件,确定哪些文件和文件夹(目录)占用了最多的磁盘空间,删除文件,移动文件以及 ...

  5. 第二周 Linux文件管理类命令及bash基本特性

    第二周 Linux文件管理类命令及bash基本特性 摘要 1.描述Linux上的文件管理类命令并详解. 2.描述Bash的工作特性. 3.描述文件的元数据信息详解. 4.描述命令别名的使用. 5.详解 ...

  6. 第二十天: Linux文件管理+Linux备份压缩+网络与磁盘管理+shell与安装

    Linux第二天 1 Linux文件管理 1.1 touch命令 在Windows系统中,我们如果想创建一个文本文档或者word文件的时候,通常的做法是 鼠标右键---新建---文本文档,这样的话,我 ...

  7. linux文件操作管理,linux 文件管理操作入门

    mkdir -p /root/kali/bp/shell  一路创建文件夹直到生成文件夹shell,中间没有kali文件夹的话也会自动创建生成 tar解压缩 范例一:将整个 /etc 目录下的文件全部 ...

  8. linux文件管理器打不开

    在使用linux文件管理器操作各种文件,由于一些莫名其妙的原因,管理器卡死,有两种方法解决: 方法一: 然后命令输入: xkill 点击开始的文件窗口,关闭 方法二: 第一步: ps -A | gre ...

  9. Linux系列教程——Shell、Linux文件管理

    文章目录 Shell 1.什么是Bash shell(壳) 2.Bash Shell能干什么? 3.平时我们如何使用Shell呢? 4.Shell提示符 5.Shell基础语法 2.Bash Shel ...

  10. 运维基本功(五):Linux文件管理-用户管理

    本文是在课程课件基础上修改的学习笔记 课程原地址:https://www.bilibili.com/video/BV1nW411L7xm 如有侵删 运维基本功(一):Linux系统安装 运维基本功(二 ...

最新文章

  1. cv_bridge使用笔记
  2. 数据结构和算法笔记1 算法的定义,特性,设计要求
  3. 每日一皮:所以重点到底是啥...
  4. numpy 笔记 view,copy和numpy的运行速度
  5. ABAP内表(internal table)有关的系统变量
  6. 自学Java汇报(3)
  7. Sony MZ-RH1 Hi-MD
  8. 羞,Spring Bean 初始化/销毁竟然有这么多姿势
  9. 基于朴素贝叶斯的鸢尾花数据集分类
  10. 乐橙本地录像回放不了_解决大华或乐橙录像机添加摄像头不能显示的密码问题...
  11. Jenkins持续集成与部署
  12. Landsat数据之介绍
  13. docker制作tomcat镜像并部署war包
  14. Redis的基本使用
  15. 电子商务系统建设(十一)
  16. TCP UDP IP
  17. 表单验证 手机号输入框
  18. web前端-javascript常用的document对象使用详解
  19. R语言学习笔记——向量
  20. 【JavaWeb学习笔记】TCP/IP 协议(三)

热门文章

  1. 苹果首家直营店落户北京三里屯 或为iPhone铺路
  2. 销售凭证、客户主数据
  3. IT大侦“碳”:VxRail的可持续法宝
  4. 1919: kirito's 星爆气流斩 多重背包
  5. python爬虫怎么下载图片到手机_python爬虫获取京东手机图片的图文教程
  6. 移位运算为什么比乘法除法快
  7. 中小学试卷组卷系统php源码,在线组卷系统
  8. 4x root 红米_红米Note 4X root教程_红米Note4X获取root权限的方法
  9. 纺织ERP_面料ERP_指点ERP系统
  10. Word不能编辑文档怎么办,文档修改了不能保存怎么办