当前位置: 首页 > news >正文

Linux基础命令之目录管理——了解各种操作文件目录的命令,万字教学,超详细!!!(1)

文章目录

  • 前言
  • 1、Linux文件系统
    • 1.1 核心特点
    • 1.2 重要目录结构
    • 1.3 文件类型
    • 1.4 文件和目录的命名规则
    • 1.5 文件与目录的定位方式
  • 2、查看目录或文件的详细信息(ls)
    • 2.1 基本语法
    • 2.2 常用操作
    • 2.3 高级用法
  • 3、切换目录(cd)
    • 3.1 常用操作
    • 3.2 扩展:显示当前工作目录(pwd)
  • 4、查看、合并文件(cat)
  • 5、复制文件或目录(cp)
  • 6、移动或重命名文件/目录(mv)
  • 7、创建文件或目录
    • 7.1 创建文件(touch)
    • 7.2 创建目录(mkdir)
  • 8、删除文件或目录
    • 8.1 rm 命令的使用
    • 8.2 rmdir 命令的使用
  • 9、检测文件类型(file)

前言

本篇文章从底层出发,详细讲解了Linux文件系统的结构及特点,同时介绍了许多管理文件和目录的命令,包括ls、cd、cat、cp、touch、mkdir、file等命令,通过学习这些命令,大家可以更好的操作并管理linux文件系统,整篇文章超10000字,每个知识点都进行了详细的讲解并给出了操作实例,适合零基础学习者。

环境准备:

在开始学习Linux命令前,我们首先需要准备好运行命令所需的环境,也就是安装Linux操作系统。这里为了方便学习,我们将通过VMware Workstation 虚拟化软件模拟一台Centos 7操作系统的虚拟机,后续所有操作都将在该虚拟机上进行

安装教程推荐:
VMware Workstation:https://blog.csdn.net/weixin_74195551/article/details/127288338
Centos 7 操作系统:https://blog.csdn.net/m0_74950751/article/details/128773027

安装完成后,在桌面鼠标右键,打开终端,后续所有命令都是在终端运行的,若安装的命令行界面,则直接输入命令即可。
在这里插入图片描述
在这里插入图片描述

1、Linux文件系统

Linux 文件系统是操作系统中用于管理和组织存储设备(如硬盘、SSD、U盘等)数据的关键组件。它不仅定义了文件和目录的存储方式,还提供了一套逻辑规则和数据结构,确保用户和应用程序能够高效、安全地访问数据。

1.1 核心特点

  • 单根树形结构:所有文件和目录以单一的根目录(/)为起点,形成层次化的树状结构,所有文件和目录都在根目录(/)下

  • 统一命名空间:无论物理存储设备如何分布,所有文件和目录都在同一逻辑路径下访问,也就是通过路径符/来进行访问,如:访问 /data/int/log ,路径通过 /字符进行分隔

  • 区分大小写:文件名和路径对大小写敏感(例如 File.txt 和 file.txt 是两个不同的文件)。

  • 一切皆文件:Linux 将硬件设备、进程信息、网络接口等抽象为文件(如 /dev/sda、/proc/cpuinfo)。

  • 所有目录均可以是挂载点 :挂载点本质就是一个目录,只要目录存在,未被其它文件占用,就可以作为挂载点,包括根目录(/)都可以成为挂载点

Tips:

  1. 在Windows中所有文件和目录都是以盘符为起点,如:C:\data,D:\image ;而在Linux中则是以根目录(/)为起点,如:/data
  2. Linux中的目录相当于Windows中的文件夹
  3. 文件是操作系统中数据存放的最小单位

1.2 重要目录结构

  • /(根目录):所有目录和文件的起点。
  • /root:超级用户(root)的家目录。
  • /bin:存放系统基本命令(如 ls、cp)。
  • /etc:系统全局配置文件(如网络配置、用户账户)。
  • /home:存放普通用户的家目录(每个用户独立子目录)。
  • /var:存放动态数据(系统服务数据、日志文件、数据库文件、邮件等)。
  • /tmp:系统临时文件,重启后可能被清除。
  • /dev:设备文件(如硬盘 /dev/sda1、终端 /dev/tty)。
  • /proc和/sys:虚拟文件系统,提供内核和进程的实时信息,反映当前系统运行状态。
  • /usr:用户程序和数据(如应用程序、库文件)。
  • /boot:系统启动所需文件(内核、引导加载程序)。
  • /mnt 和 /media:临时挂载外部设备的目录(如U盘、光盘)。
  • /opt:第三方软件的可选安装位置。

1.3 文件类型


Linux 文件系统支持多种文件类型:

  1. 普通文件(Regular File):文本、二进制、图像等数据。

  2. 目录(Directory):包含其他文件或子目录的容器。

  3. 符号链接(Symbolic Link):指向另一个文件或目录的快捷方式。

  4. 设备文件(Device File)

    • 块设备(Block Device):按块访问的设备(如硬盘)。
    • 字符设备(Character Device):按字符流访问的设备(如键盘)。
  5. 管道(Pipe)和套接字(Socket):用于进程间通信。

  6. 命名管道(FIFO):类似管道,但有文件名。

1.4 文件和目录的命名规则


1、基本规则

  1. 区分大小写

    • 文件名和目录名对大小写敏感,例如 file.txt、File.txt 和 FILE.TXT 是三个不同的文件。
  2. 允许的字符

    • 可以使用字母(A-Z、a-z)、数字(0-9)、下划线(_)、点(.)、连字符(-)等。
    • 避免特殊字符:如!@#$%^&*(){}[]|\;:'"<>?等,因为它们可能在 Shell 中有特殊含义(需用引号或转义符)。
  3. 长度限制

    • 通常最大长度为 255 字节(UTF-8 编码下可能少于 255 个字符)。
    • 完整路径(含 /)的最大长度为 4096 字节(PATH_MAX 限制)。
  4. 不能以 / 命名

    • / 是路径分隔符,不能作为文件名的一部分。


2、特殊名称

  1. ...

    • . 表示当前目录,.. 表示父目录(是每个目录默认存在的硬链接)。
  2. 隐藏文件或目录

    • . 开头的文件或目录(如 .bashrc)默认隐藏,需用 ls -a 查看。
  3. 避免使用空格

    • 虽然允许(如 my file.txt),但空格在 Shell 中会被解析为参数分隔符,需用引号或转义符(\)处理,如下:
      touch "my file.txt"    # 正确(使用引号包裹)
      touch my\ file.txt     # 正确(使用反斜杠转义)
      

3、推荐写法

  1. 使用小写字母和下划线

    例如 project_notes.txt,避免大小写混用导致的混淆。

  2. 避免特殊字符和空格

    优先用 -_ 代替空格(如 backup-2023.tar.gz)。

  3. 扩展名非强制要求但有用

    Linux 不依赖扩展名识别文件类型(如 .txt、.sh 仅为约定),但推荐保留以便管理。

4、 禁止使用的名称

  • 系统保留名称:如 /dev/null、/proc 等路径下的特殊文件。

  • 设备文件:避免直接命名文件为 sda、tty 等,可能与系统设备冲突。

1.5 文件与目录的定位方式

在 Linux 中,绝对路径和相对路径是两种不同的文件或目录定位方式,它们的核心区别在于参照点不同。以下是详细解释和对比:

1、绝对路径(Absolute Path)

  • 定义:从文件系统的根目录(/)开始的完整路径,唯一指向目标文件或目录。

  • 特点

    • / 开头(例如 /home/user/file.txt)。
    • 无论当前工作目录在哪里,绝对路径始终指向同一目标。
  • 用途

    • 脚本或配置文件中需要明确指定文件位置时(如服务配置文件路径)
    • 跨目录操作时避免歧义。
  • 示例:

    cat /etc/passwd       # 直接访问根目录下的文件
    ls /usr/local/bin     # 列出绝对路径指向的目录内容
    

2、相对路径(Relative Path)

  • 定义:以当前工作目录(pwd)为参照点的路径,无需从根目录开始。

  • 特点

    • 不以 / 开头(例如 docs/report.txt)。
    • 路径的实际含义依赖当前所在目录。
  • 特殊符号
    . 表示当前目录(例如 ./script.sh)。
    .. 表示父目录(例如 ../project/file.c)。

  • 用途

    • 快速访问当前目录附近的文件。
    • 简化命令行操作(减少长路径输入)。

2、查看目录或文件的详细信息(ls)

2.1 基本语法

语法:ls [选项] [文件/目录]
ls 是 Linux 中最常用的命令之一,用于列出目录中的文件和子目录

注意:

  • 如果不指定目录,默认列出当前目录的内容。

  • 可以指定文件或目录名,查看特定路径下的内容。

常用选项

选项说明
-a显示所有文件(包括隐藏文件,以 . 开头的文件)
-l以长格式显示详细信息(权限、所有者、大小、修改时间等)
-h与 -l 一起使用,以人类可读的格式显示文件大小(如 KB、MB)
-t按修改时间排序(最新修改的在前)
-r反向排序
-S按文件大小排序(大的在前)
-R递归列出子目录内容
-i显示文件的 inode 编号
--color彩色输出(默认启用,目录、文件等类型显示不同颜色)

2.2 常用操作


1、列出当前目录内容

ls


2、显示所有文件(包括隐藏文件)

ls -a


3、以长格式显示详细信息

ls -l

输出示例:

-rw-r--r-- 1 user group  1024 Jan 10 10:00 file.txt   # 文件
drwxr-xr-x 2 user group  4096 Jan 11 11:00 dir   # 目录

信息说明:

  • 第一列:文件类型和权限(- 表示文件,d 表示目录)。

  • 第二列:硬链接数。

  • 第三列:所有者。

  • 第四列:所属组。

  • 第五列:文件大小(默认字节)。

  • 第六列:最后修改时间。

  • 第七列:文件名。

4、组合选项(如 -lh 显示易读的文件大小)

ls -lh

输出大小会显示为 1.0K、2.5M 等格式。

5、按时间排序(最新修改的在前)

ls -lt


6、递归列出子目录内容

ls -R


7、显示文件的 inode 编号

ls -i


8、列出指定目录的内容

ls /path/to/directory


9、反向排序

ls -lr


10、按文件大小排序(大的在前)

ls -lS

2.3 高级用法


1、过滤显示特定文件(结合通配符)

ls *.txt       # 列出所有 .txt 文件
ls file[1-3].* # 列出 file1.txt, file2.log 等


2、忽略某些文件(需搭配 --ignore)

ls --ignore='*.log'  # 不显示 .log 文件


3、自定义时间显示格式(需搭配 --time-style)

ls -l --time-style="+%Y-%m-%d %H:%M:%S"


注意事项:

  1. 如果文件名包含空格或特殊字符,需要用引号包裹:

    ls "my file.txt"
    
  2. 默认情况下,ls 输出的颜色可能因系统配置而异。如果颜色不显示,可以强制启用:

    ls --color=auto
    

通过灵活组合选项,ls 可以满足大部分文件列表需求。如需更多帮助,可以通过 man ls 查看完整手册。

3、切换目录(cd)

语法:cd [选项] [目录路径]
在Linux中,cd(Change Directory)命令用于切换当前工作目录。它是日常操作中最基础且频繁使用的命令之一。

3.1 常用操作


1、切换到指定目录

  • 使用绝对路径进行切换:

    cd /usr/local  # 进入/usr/local目录
    
  • 使用相对路径进行切换,假设当前目录是/home/user:

    cd Downloads      # 进入/home/user/Downloads
    cd ./Documents    # ./表示当前目录(可省略)
    

2、返回家目录

cd          # 直接输入cd,不加参数,默认切换为家目录
cd ~        # ~代表用户的家目录
cd $HOME    # 使用环境变量$HOME


3、返回上一级目录

cd ..       # 两个点表示上一级目录


4、返回上两级目录

cd ../..    # 每多一个..就再往上一级


5、切换到上一个工作目录

cd -        # 在最近使用的两个目录之间快速切换


6、切换到带有空格或特殊字符的目录

  • 用引号包裹路径或使用转义符:

    cd "My Documents"   # 路径包含空格
    cd My\ Documents    # 使用反斜杠转义空格
    

7、常见问题解决

  1. 目录不存在时
    如果路径错误或目录不存在,会提示:

    bash: cd: no such file or directory 	# 检查路径拼写或先用ls确认目录是否存在。
    
  2. 权限不足
    若目录无执行权限(x),会提示:

    bash: cd: permission denied   # 用ls -l查看权限,并通过chmod或sudo解决。
    

3.2 扩展:显示当前工作目录(pwd)


假如当前工作目录为: /path/data

pwd    # 输入命令后显示: /path/data

4、查看、合并文件(cat)

cat 是 Linux 中一个常用的命令,用于查看、合并或创建文件。它的名称来源于 concatenate(连接),但它的功能不仅限于文件连接。

1、常用方法使用示例:

  1. 查看文件内容

    cat filename
    
    • 这会显示 filename文件 的全部内容到终端。
    • 示例:
      cat /etc/os-release  # 查看系统信息文件
      
  2. 查看多个文件

    cat file1 file2
    
    • 依次显示 file1file2 的内容。
    • 示例:
      cat notes.txt backup.txt
      
  3. 合并文件内容并输出到新文件

    cat file1 file2 > merged_file
    
    • file1file2 的内容合并后写入 merged_file(会覆盖目标文件)。
    • 示例:
      cat part1.txt part2.txt > complete.txt
      
  4. 追加内容到文件

    cat file1 >> file2
    
    • file1 的内容追加到 file2 的末尾(不会覆盖 file2)。
    • 示例:
      cat log.txt >> archive.log
      
  5. 创建新文件(或编辑小文件)

    cat > newfile.txt
    
    • 从键盘输入内容,按 Ctrl+d 保存到 newfile.txt(会覆盖已有文件)。

    • 示例:

      cat > greeting.txt
      Hello World!  # 输入内容
      Ctrl+d        # 保存并退出
      
  6. 显示行号

    cat -n filename
    
    • 显示文件内容并加上行号(包括空行)。
    • 示例:
      cat -n /etc/hosts
      
  7. 显示非空行的行号

    cat -b filename
    
    • 只对非空行编号(类似 -n,但忽略空行)。
    • 示例:
      cat -b script.sh
      
  8. 显示特殊字符(如制表符、换行符等)

    cat -A filename
    
    • ^I 表示制表符(Tab),$ 表示行尾。
    • 示例:
      cat -A /etc/profile
      
  9. 避免输出中的多行空行

    cat -s filename
    
    • 将连续的空行压缩为一行。
    • 示例:
      cat -s logfile.txt
      
  10. 与其他命令结合使用

    • 通过管道(|)cat 输出传递给其他命令:
      cat file.txt | grep "keyword"  # 搜索文件中的关键词
      cat file.txt | less           # 分页查看内容
      

2、注意事项

  1. 大文件警告: cat 会一次性输出整个文件,如果文件很大(如日志文件),建议用 lessmore 分页查看:

    less hugefile.log
    
  2. 文件覆盖风险: > 会覆盖目标文件,使用前请确认。

总结:
cat 的核心功能是快速查看、合并或创建小文件。对于复杂操作(如编辑、分页),建议结合其他工具(如 less、vim 或 grep)。

5、复制文件或目录(cp)


1、基础语法

cp 是 Linux 中用于复制文件或目录的基本命令,语法如下:

cp [选项] 源文件 目标文件
cp [选项] 源文件... 目标目录


2、基本用法

  • 复制文件到目标文件(重命名):

    cp file1.txt file2.txt  # 将 file1.txt 复制为 file2.txt
    
  • 复制文件到目录:

    cp file1.txt /path/to/directory/  # 将 file1.txt 复制到指定目录
    
  • 复制多个文件到目录:

    cp file1.txt file2.txt /path/to/directory/  # 复制多个文件到目录
    

2、常用选项

选项说明
-r 或 -R递归复制目录(用于复制文件夹)
-i覆盖前提示确认(交互模式)
-f强制覆盖,不提示(慎用)
-v显示复制过程的详细信息
-u仅当源文件比目标文件新时复制(更新)
-p保留原文件的属性(权限、时间戳等)
-a归档模式(相当于 -rp,保留所有属性)


3、常用方法使用示例

  • 递归复制目录:

    cp -r dir1/ dir2/  # 将 dir1 目录及其内容复制到 dir2
    
  • 交互式复制(覆盖前询问):

    cp -i file1.txt /path/to/directory/
    
  • 保留文件属性:

    cp -p file1.txt /backup/  # 保留权限、时间戳等
    
  • 仅更新新文件:

    cp -u *.txt /backup/  # 仅将目标目录中没有的文件复制进去
    

4、注意事项

  • 如果目标文件已存在,cp 会默认覆盖(除非使用 -i 选项)。

  • 复制目录时必须加 -r-a

  • 使用 -a 可以完整保留文件属性(适合备份)。

5、高级用法

  • 通配符复制:

    cp *.jpg /path/to/images/  # 复制所有 .jpg 文件
    
  • 复制到当前目录:

    cp /path/to/file1.txt .  # 目标 `.` 表示当前目录
    

示例完整命令:

cp -av source_dir/ backup_dir/  # 递归复制并保留所有属性,显示详细信息

通过灵活组合选项,可以满足不同场景的复制需求。

6、移动或重命名文件/目录(mv)


1、基本语法

mv 命令是 Linux 中用于移动或重命名文件/目录的基本命令,其名称来源于 “move”。语法如下:

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

常用选项:

选项作用
-i覆盖前提示确认
-n禁止覆盖已存在文件
-f强制覆盖,不提示
-v显示操作详情
-u仅在源文件比目标新时移动


2、常用方法使用实例

  1. 移动文件/目录

    mv file.txt /path/to/destination/  # 将文件移动到目标目录
    mv dir1 /path/to/destination/     # 将目录移动到目标目录
    
  2. 重命名文件/目录

    mv oldname.txt newname.txt       # 重命名文件
    mv olddir newdir                 # 重命名目录
    
  3. 移动多个文件到目录

    mv file1.txt file2.txt /target/dir/  # 移动多个文件到目标目录
    
  4. 覆盖文件时的提示

    • 默认情况下,mv 会直接覆盖已存在的目标文件。

    • 使用 -i(交互模式)会在覆盖前提示确认:

      mv -i file.txt existing_file.txt
      
  5. 禁止覆盖(安全模式)

    mv -n file.txt existing_file.txt  # 如果目标存在,则不移动
    
  6. 强制覆盖(忽略提示)

    mv -f file.txt /target/  # 强制覆盖,不询问
    
  7. 显示详细操作(调试)

    mv -v file.txt /target/  # 显示移动的详细信息
    

3、注意事项

  1. 权限问题:需要有对源文件的读取权限和目标目录的写入权限。

  2. 跨设备移动:如果目标在另一设备(如U盘),mv 实际是复制+删除,速度较慢。

  3. 符号链接:移动符号链接时,默认移动链接本身(而非指向的文件)。

通过灵活组合选项和参数,mv 可以高效管理文件位置和名称。使用前建议用 ls 确认路径,避免误操作。

7、创建文件或目录

7.1 创建文件(touch)


1、基本语法

在 Linux 中,touch 命令主要用于创建空文件或更新文件的时间戳(访问时间和修改时间)。语法格式如下:

touch [选项] 文件名...

常用选项:

选项说明
-a仅更新访问时间(atime)
-m仅更新修改时间(mtime)
-c不创建新文件(若文件不存在)
-t指定时间戳(格式:[[CC]YY]MMDDhhmm[.ss])
-r使用参考文件的时间戳
-d使用字符串描述时间(如 touch -d “2024-01-01” file.txt)


2、常用方法使用示例

  1. 创建一个空文件

    touch file.txt
    

    如果 file.txt 不存在,则会创建一个空文件;如果已存在,则会更新其时间戳(默认为当前时间)。

  2. 同时创建多个文件

    touch file1.txt file2.txt file3.txt
    
  3. 强制不创建新文件(仅更新时间戳)

    touch -c non_existent_file.txt
    

    如果文件不存在,-c(或 --no-create)选项会避免创建新文件。

  4. 指定时间戳(而非当前时间)

    touch -t 202401011200 file.txt
    

    -t 后接时间格式:[[CC]YY]MMDDhhmm[.ss](例如:202401011200 表示 2024 年 1 月 1 日 12:00:00)。

  5. 使用参考文件的时间戳

    touch -r reference_file.txt target_file.txt
    

    -r(或 --reference)将 target_file.txt 的时间戳设置为与 reference_file.txt 相同。

  6. 仅更新访问时间(atime)或修改时间(mtime)

    touch -a file.txt      # 只更新访问时间
    touch -m file.txt      # 只更新修改时间
    

3、注意事项

  • 如果文件名包含空格或特殊字符,需用引号包裹:

    touch "my file.txt"
    
  • 需要权限:对目标目录有写入权限才能创建文件。

通过灵活组合选项,touch 可以高效管理文件的时间戳或快速创建空文件。

7.2 创建目录(mkdir)


1、基本语法

mkdir 是 Linux 中用于创建目录(文件夹)的命令,语法格式如下:

mkdir [选项] 目录名

常用选项:

选项作用
-p递归创建多级目录
-m设置权限(如 755、644)
-v显示操作详情

2、常用方法使用示例

  1. 创建单个目录

    mkdir dir1
    

    会在当前目录下创建名为 dir1 的文件夹。

  2. 同时创建多个目录

    mkdir dir1 dir2 dir3
    

    一次性创建多个同级目录。

  3. 创建嵌套目录(递归创建)

    mkdir -p parent/child/grandchild
    

    -p 选项会自动创建路径中所有不存在的父目录。

  4. 设置目录权限(创建时指定权限)

    mkdir -m 755 mydir
    

    -m 选项直接设置目录权限(此处 755 表示所有者可读/写/执行,其他用户可读/执行)。

  5. 显示创建过程(verbose 模式)

    mkdir -v dir1 dir2
    

    -v 选项会输出每个目录的创建信息。

3、常见问题解决

  • 目录已存在时报错:
    使用 -p 选项可忽略此错误(不会覆盖原有目录)。

  • 权限不足:
    确保对目标路径有写入权限,或用 sudo 提权:

    sudo mkdir /protected_path/newdir
    

8、删除文件或目录

8.1 rm 命令的使用

rm 是 Linux 中用于删除文件或目录的命令,使用时需谨慎,因为删除后通常无法恢复。


1、基本语法

rm [选项] 文件或目录名

常用选项:

选项作用
-f强制删除(忽略不存在的文件,不提示确认)
-i删除前逐一询问确认(交互式)
-r 或 -R递归删除目录及其内容(用于删除目录)
-v显示删除的详细过程
--help查看帮助信息
--version显示版本信息


2、常用方法使用示例

  1. 删除单个文件

    rm file.txt
    
  2. 强制删除文件(无警告)

    rm -f file.txt
    
  3. 交互式删除(逐个确认)

    rm -i file1.txt file2.txt
    
  4. 删除目录(递归删除)

    rm -r mydir/
    
  5. 强制递归删除目录(慎用!)

    rm -rf mydir/
    
  6. *删除多个文件(通配符

    rm *.log   # 删除所有 .log 文件
    
  7. 显示删除过程(verbose)

    rm -v old_*
    

3、危险操作警告

  • rm -rf /rm -rf /*
    这会强制删除根目录下的所有文件(系统毁灭性操作!),现代系统通常会有保护机制,但仍需绝对避免。

  • 无备份删除重要数据
    建议先使用 mv 命令将文件移到临时目录,确认无影响后再彻底删除。

4、注意事项

  1. 权限问题: 删除文件需对所在目录有写权限。

  2. 隐藏文件: 通配符 * 不匹配以 . 开头的隐藏文件,需显式指定(如 rm -r .* 需谨慎)。

建议在使用 rm -r 前先用 ls 确认目标文件/目录,避免误删。

8.2 rmdir 命令的使用

rmdir 是 Linux 中用于删除空目录的命令

1、基本语法

rmdir [选项] 目录名

常用选项:

选项描述
-p递归删除父目录(如果它们为空)。
--ignore-fail-on-non-empty忽略因目录非空导致的错误(不报错,但仍不会删除)。
-v显示操作详情(verbose 模式)。


2、常用方法使用示例:

  1. 删除单个空目录

    rmdir mydir
    

    仅当 mydir 为空时才会删除。

  2. 递归删除空目录
    若目录结构为 parent/child,且两者均为空:

    rmdir -p parent/child
    

    会先删除 child,再删除 parent(如果父目录也变为空)。

  3. 忽略非空目录的错误

    rmdir --ignore-fail-on-non-empty mydir
    

    如果 mydir 非空,命令会静默退出,不会报错。

  4. 显示操作详情

    rmdir -v mydir
    

    输出:rmdir: removing directory 'mydir'

3、注意事项

  1. 仅能删除空目录
    如果目录中有文件或其他子目录,rmdir 会报错:

    rmdir: failed to remove 'mydir': Directory not empty
    

    此时需用 rm -r 目录名 强制递归删除(谨慎使用!)。

  2. 路径中的父目录必须存在
    例如 rmdir a/b/c 要求 a/b 存在,否则会报错。

  3. rm -r 的区别

    • rmdir:安全,只删空目录。

    • rm -r:危险,递归删除目录及所有内容(无确认提示!)。

4、适用场景

  • 在脚本中安全删除空目录(避免误删数据)。

  • 清理空的日志或临时目录结构。

如果需要删除非空目录,请改用:

rm -r 目录名  # 谨慎操作!数据不可恢复!

9、检测文件类型(file)

file命令是 Linux 中用于检测文件类型的实用工具,它会根据文件内容(而非文件扩展名)判断文件类型。

1、基本语法

file [选项] 文件名

常用选项:

选项作用
-b简洁输出(不显示文件名)
-i输出 MIME 类型
-L跟随软链接
-f <文件>从文件中读取待检测的文件名列表
-k不停止在第一个匹配结果(继续检测更多可能类型)
-z尝试检测压缩文件内部内容


2、常用方法使用示例

  1. 检测单个文件类型

    file /bin/ls
    

    输出示例:

    /bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, stripped
    
  2. 检测多个文件类型

    file file1.txt file2.jpg
    
  3. 检测目录下所有文件类型

    file *
    
  4. 显示更详细的输出(-i 选项)

    输出文件的 MIME 类型:

    file -i filename
    

    示例输出:

    filename: text/plain; charset=utf-8
    
  5. 不压缩软链接(-L 选项)
    直接检测链接指向的文件类型:

    file -L /path/to/symlink
    
  6. 从标准输入读取文件(-f 选项)
    通过列表文件批量检测:

    file -f file_list.txt  # file_list.txt文件中存放着要检测的文件名,一行一个文件名
    

3、高级用法

  • 检测压缩文件内容:

    file -z backup.tar.gz
    
  • 仅输出匹配的文本描述(结合 grep):

    file * | grep "text"
    

4、原理说明

file 命令通过以下步骤判断文件类型:

  1. 检查文件的 magic number(如 ELF 头PNG 头等)。

  2. 若无特殊标识,则分析文件内容(如文本编码、可读字符比例等)。

  3. 结合 /usr/share/misc/magic/etc/magic 中的规则库进行匹配。

通过灵活使用 file 命令,你可以快速识别未知文件的类型,尤其在处理无扩展名文件时非常有用。

http://www.xdnf.cn/news/406819.html

相关文章:

  • OCCT知识笔记之分解BOX
  • 计算频谱的方法
  • 《基于 Kubernetes 的 WordPress 高可用部署实践:从 MariaDB 到 Nginx 反向代理》
  • 《AI大模型应知应会100篇》第59篇:Flowise:无代码搭建大模型应用
  • 免费批处理软件一键修改文件名称
  • 了解docker-compose.yml
  • mac一键安装gpt-sovit教程中,homebrew卡住不动的问题
  • latex控制表格宽度,不要超出页面
  • windows系统使用phpstudy安装ssl证书
  • 机器学习驱动的智能化电池管理技术与应用
  • 腾讯怎样基于DeepSeek搭建企业应用?怎样私有化部署满血版DS?直播:腾讯云X DeepSeek!
  • 解决 CJSON 浮点数精度问题:从 `cJSON_AddNumberToObject` 到 `cJSON_AddRawToObject`
  • IoTDB 分段查询语句深度剖析:GROUP BY 与时序语义的完美结合
  • 2024年北理工Python123第六章编程题整理
  • 【愚公系列】《Manus极简入门》034-跨文化交流顾问:“文化桥梁使者”
  • TCPIP详解 卷1协议 七 防火墙和网络地址转换
  • vLLM部署多模态大模型Qwen2.5-VL-3B-Instruct
  • 基于React的高德地图api教程002:自定义地图样式
  • AI边缘网关_5G/4G边缘计算网关厂家_计讯物联
  • 面试题 - Kafka、RabbitMQ、RocketMQ如何选型?
  • LInux系统文件与目录管理(二)
  • 如何选择合适的服务器操作系统
  • 学习日志04 java
  • MyBatis-Plus使用 wrapper.apply() 添加自定义 SQL 片段
  • 马铃薯土豆幼苗与杂草检测数据集VOC+YOLO格式3051张2类别
  • winreg查询Windows注册表的一些基本用法
  • python标准库--heapq - 堆队列算法(优先队列)在算法比赛的应用
  • 算法题(145):货仓选址
  • 服务器多JAR程序运行与管理指南
  • ZeRO与3D并行之间的关系