Alex_McAvoy

想要成为渔夫的猎手

Linux 文件与目录管理

【查看】

命令格式

查看文件与目录的命令是 ls 命令,在 Linux 文件属性 中,介绍了 ls 基本用法,下面详细地说明一下其具体用法

ls 命令会列出某目录下的文件与目录,且默认会以文件名进行升序排序,其格式为:ls [-选项] [目录名称]

其选项有:

  • -a:显示全部文件(包含以 . 开头的隐藏文件)
  • -A:显示全部文件,但不包括 ... 这两个目录
  • -d:仅列出目录本身,不包含目录内的文件
  • -l:列出长数据串,包含文件属性与权限
  • -h:将文件容量以 KB、MB、GB 等形式列出
  • -F:根据文件、目录等信息给予附加的数据结构(* 代表可执行文件,/ 代表目录,= 代表 socket 文件,| 代表FIFO文件)
  • -i:列出 inode 号
  • -n:列出 UID 与 GID
  • -R:连同子目录一起列出
  • -f:直接列出结果,不进行排序
  • -r:将结果按文件名降序排序
  • -S:以文件容量大小排序
  • -t:以时间排序
  • —color=never:不依据文件特性予以颜色显示
  • —color=auto:依据文件特性予以颜色显示
  • —full-time:以完整时间模式显示(含年、月、日、时、分)
  • —time={atime,ctime}:访问时间或改变权限属性时间(默认为内容更改时间)

说明:加粗的选项为常用选项

文件变动时间

在使用 --time={atime,ctime} 命令时,涉及到访问时间、权限属性变动时间、内容变动时间

  • mtime:内容更改时间(modification time),当文件内容更改时,会更新该时间
  • ctime:权限属性变动时间(status time),当文件权限或属性更改时,会更新该时间
  • atime:访问时间(access time),当访问该文件时,会更新该时间

实例

1.使用 ls -al ~ 命令,将主文件夹下的所有文件都列出来

如下图,以 . 开头的是隐藏文件,同时目录文件以深蓝色表示

2.使用 ls -alF --color=never ~ 命令,将主文件夹下的所有文件列出,同时不显示颜色,但在文件名末显示文件代表的类型

如下图,虽然不显示颜色,但在文件名末,目录文件以 / 表示

3.使用 ls -l --full-time ~ 完整呈现文件的修改时间

【复制】

命令格式

cp 命令是复制文件的命令,但除了用于复制一或多个文件外,还可以创建连接文件,对比两文件的新旧而予以更新

其命令格式有以下三种:

  1. cp [选项] 源文件 目标文件:对比两文件新旧而予以更新
  2. cp [选项] 源文件 目录:将源文件复制到目录下
  3. cp [选项] 源文件1 源文件2 ... 源文件n 目录:将多个源文件复制到目录下

其选项有:

  • -u:用于对比两文件新旧,若源文件比目标文件新,则进行更新,常用于文件备份
  • -i:互动模式,若目标文件已存在,在覆盖前会进行询问
  • -f:强制,若目标文件已存在且无法开启,则删除后再尝试一次
  • -p:连通文件属性一起复制过去,而非使用默认属性,常用于文件备份
  • -r:递归持续复制,用于目录的复制
  • -d:若源文件为连接文件的属性,则复制连接文件属性
  • -s:进行软连接的连接文件创建
  • -l:进行硬连接的连接文件创建
  • -a:相当于 -pdr

说明:加粗的选项为常用选项

实例

1.执行两次复制命令,第一次将 /test/test1 目录下的 test.txt 文件复制到 /test/test2 目录下,第二次同样执行上述操作,但使用 -i 选项,询问是否进行覆盖

如下图,可以看到,当已经存在了一个文件后,要进行覆盖,加上 -i 选项后,会在覆盖前询问用户是否确定,通过输入 ny 来进行二次确认

2.将 /test/test1 目录下的 test1.txt 文件复制到 /test/test2 目录下,同时将其改名为 test.txt

3.将 /test/test1 目录下的 test1.txt、test2.txt、test3.txt 文件批量复制到 /test/test2 目录下

4.对比 /test/test1 目录下的 test1.txt 和 /test/test2 目录下的 test1.txt,当前者比后者新时,进行复制

5.将 test/test1/ 目录下的所有内容复制到 test/test2 下

如下图,加了 -r 参数后,可以复制目录,但是文件和目录的权限可能会被改变

【移动】

命令格式

mv 命令用于移动文件和目录,并且可以在移动之后进行重命名,其命令格式有三种:

  1. mv [选项] 源文件 新文件名:用于文件重命名
  2. mv [选项] 源文件 目录:将源文件移动到目录
  3. mv [选项] 源文件1 源文件2 ... 源文件n 目录:将多个文件移动到目录

其选项有:

  • -f:强制移动,如果目标文件已存在,不会询问,而是直接进行覆盖
  • -i:互动模式,若文件已存在,会在移动或重命名前询问用户是否确定进行覆盖
  • -u:若文件已存在,且源文件比之前的文件要新,那么就会进行覆盖

实例

1.将 /test 目录下的 test.txt 重命名为 test3.txt

2.将 /test 目录下的 test1.txt 移动到 /test/temp 目录下

2.将 /test 目录下的 test2.txt、test3.txt 全部移动到 /test/temp 目录下

【删除】

命令格式

rm 命令用于删除文件或目录,其命令格式为:rm [选项] 文件或目录

选项有:

  • -f:强制删除,不会出现警告信息
  • -i:互动模式,在删除前询问用户是否确定进行该操作
  • -r:递归删除,用于目录的递归删除

需要说明的是,无论一个目录是否为空,都无法直接用 rm 目录 进行删除,需要加上 -r 参数,但由于该参数十分危险,容易造成误删,因此在实际应用中,常使用 rmdir 命令进行目录删除

实例

1.删除 /test/test1 目录及其下的所有文件

可以看出,在删除目录时,不加 -r 参数无法进行删除

2.删除 /test 目录下所有以 .txt 结尾的文件,并在删除过程中进行询问

如下图,在进行删除时,可以利用通配符和 -i 选项来辅助操作,既可以进行批量删除,还可以防止误删

【文件创建】

命令格式

使用 touch 命令可以创建文件或修改文件时间,其命令格式为:touch [选项] 文件

当有选项时,用于修改文件时间,当无选项时,用于创建文件,选项有:

  • -a:仅修改 atime,后接要修改的 12 位日期时间串
  • -m:仅修改 mtime,后接要修改的 12 位日期时间串
  • -d:修改 mtime 和 atime,后接要修改的日期时间串
  • -t:修改 mtime 和 atime,后接要修改的时间

实例

1.在 /test 目录下,创建一个名为 test.txt 的文件,并检查其日期

2.将 test.txt 的 mtime 和 atime 改为 2000/01/01 00:00

3.将 test.txt 的 mtime 和 atime 改为 5 天前

4.将 test.txt 的 atime 改为 2000/01/01 00:00

感谢您对我的支持,让我继续努力分享有用的技术与知识点!