Linux 通配符

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

Linux 通配符是特殊字符,允许你根据文件名中的模式一次性搜索和操作多个文件。它们是在命令行环境中高效管理文件的强大工具。在这个实验中,你将学习如何使用不同的通配符,基于模式匹配执行常见操作,如列出、复制和删除文件。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cp("File Copying") linux/BasicFileOperationsGroup -.-> linux/mv("File Moving/Renaming") linux/BasicFileOperationsGroup -.-> linux/rm("File Removing") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/FileandDirectoryManagementGroup -.-> linux/mkdir("Directory Creating") linux/FileandDirectoryManagementGroup -.-> linux/wildcard("Wildcard Character") subgraph Lab Skills linux/ls -.-> lab-271447{{"Linux 通配符"}} linux/cp -.-> lab-271447{{"Linux 通配符"}} linux/mv -.-> lab-271447{{"Linux 通配符"}} linux/rm -.-> lab-271447{{"Linux 通配符"}} linux/cd -.-> lab-271447{{"Linux 通配符"}} linux/mkdir -.-> lab-271447{{"Linux 通配符"}} linux/wildcard -.-> lab-271447{{"Linux 通配符"}} end

理解星号 (*) 通配符

星号 * 是 Linux 中最常用的通配符。它代表文件名中的任意数量的字符(包括零个字符)。这使得它在处理具有相似命名模式的文件组时非常有用。

让我们来练习使用星号通配符:

  1. 首先,打开你的终端并导航到项目目录:

    cd ~/project
  2. 为这个实验创建一个练习目录并进入该目录:

    mkdir -p wildcard_practice
    cd wildcard_practice
  3. 现在,让我们创建一些示例文件以供操作:

    touch file1.txt file2.txt file3.txt document1.pdf document2.pdf image.jpg
  4. 使用 ls 命令列出目录中的所有文件:

    ls

    你应该会看到你刚刚创建的所有文件:

    document1.pdf  document2.pdf  file1.txt  file2.txt  file3.txt  image.jpg
  5. 现在,让我们使用星号通配符只列出文本文件:

    ls *.txt

    这个命令应该只显示以 .txt 结尾的文件:

    file1.txt  file2.txt  file3.txt
  6. 你还可以使用通配符来匹配以特定模式开头的文件。要列出所有以 "file" 开头的文件:

    ls file*

    这个命令应该显示:

    file1.txt  file2.txt  file3.txt
  7. 要列出所有 PDF 文档:

    ls *.pdf

    这个命令应该显示:

    document1.pdf  document2.pdf

星号通配符非常灵活,可以在模式中的任何位置使用。例如,*1* 可以匹配文件名中任意位置包含 "1" 的任何文件。

使用问号 (?) 通配符

问号 ? 通配符代表恰好一个字符。当你想匹配名称相似但在特定位置只有一个字符不同的文件时,它非常有用。

让我们来探究一下问号通配符是如何工作的:

  1. 确保你仍然在 wildcard_practice 目录中:

    cd ~/project/wildcard_practice
  2. 让我们创建一些额外的文件,以便更好地演示问号通配符:

    touch file-a.txt file-b.txt file-c.txt test1.log test2.log test3.log
  3. 要列出所有“file-?.txt”文件,其中 ? 代表一个字符:

    ls file-?.txt

    这个命令应该显示:

    file-a.txt  file-b.txt  file-c.txt
  4. 同样,要列出所有“test?.log”文件:

    ls test?.log

    输出应该是:

    test1.log  test2.log  test3.log
  5. 你可以组合多个问号来匹配多个单个字符。例如,要匹配所有名称形式为“file?”的文本文件:

    ls file?.txt

    这应该显示:

    file1.txt  file2.txt  file3.txt
  6. 当你需要匹配在特定位置有变化的特定模式时,问号通配符特别有用。例如,如果你想要以单个数字后跟 .log 结尾的文件:

    ls test?.log

问号通配符比星号更具针对性,因为它恰好匹配一个字符,而星号可以匹配任意数量的字符。

使用方括号 [] 来指定字符类

方括号 [] 通配符允许你指定一组或一个范围的字符,用于匹配文件名中特定位置的字符。这比星号或问号通配符提供了更高的精度。

让我们来练习使用方括号通配符:

  1. 确保你仍然在 wildcard_practice 目录中:

    cd ~/project/wildcard_practice
  2. 让我们创建一些额外的文件以供操作:

    touch data-1.csv data-2.csv data-3.csv data-a.csv data-b.csv
  3. 要列出在特定位置有数字的文件,你可以使用带有范围的方括号表示法:

    ls data-[1-3].csv

    这应该显示:

    data-1.csv  data-2.csv  data-3.csv
  4. 同样,要列出在该位置有字母的文件:

    ls data-[a-z].csv

    这应该显示:

    data-a.csv  data-b.csv
  5. 你还可以在方括号内列出特定的字符。例如,要列出“data-”后面是 '1' 或 'a' 的文件:

    ls data-[1a].csv

    这应该显示:

    data-1.csv  data-a.csv
  6. 方括号内的脱字符 ^ 符号表示取反匹配。要列出所有“data-”文件,但不包括以“1”或“2”结尾的文件:

    ls data-[^12].csv

    这个命令应该显示:

    data-3.csv  data-a.csv  data-b.csv

当你需要匹配在特定位置有特定字符差异的文件时,方括号提供了精确的控制。

使用通配符进行实际文件操作

既然我们已经了解了不同类型的通配符,那么让我们使用它们来执行常见的文件操作,例如复制、移动和删除文件。

  1. 首先,确保你位于 wildcard_practice 目录中:

    cd ~/project/wildcard_practice
  2. 让我们创建一个备份目录来存储文件副本:

    mkdir backup
  3. 使用星号通配符将所有文本文件复制到备份目录:

    cp *.txt backup/
  4. 让我们验证文件是否已正确复制:

    ls backup/

    你应该会在备份目录中看到所有文本文件:

    file-a.txt  file-b.txt  file-c.txt  file1.txt  file2.txt  file3.txt
  5. 现在,让我们创建另一个目录来组织不同类型的文件:

    mkdir csv_files pdf_files log_files
  6. 将所有 CSV 文件移动到 csv_files 目录:

    mv *.csv csv_files/
  7. 将所有 PDF 文件移动到 pdf_files 目录:

    mv *.pdf pdf_files/
  8. 将所有日志文件移动到 log_files 目录:

    mv *.log log_files/
  9. 让我们检查每个目录是否包含正确的文件:

    echo "CSV Files:"
    ls csv_files/
    echo "PDF Files:"
    ls pdf_files/
    echo "Log Files:"
    ls log_files/

    输出应显示每个目录中相应的文件。

  10. 最后,让我们清理备份目录,删除所有名称中包含数字的文本文件:

    rm backup/file[0-9].txt
  11. 验证备份目录中是否仅保留了名称为字母的文本文件:

    ls backup/

    输出应显示:

    file-a.txt  file-b.txt  file-c.txt

这些示例展示了通配符如何极大地简化文件管理任务,否则这些任务可能需要多个命令或手动处理单个文件。

总结

在本次实验中,你学习了如何使用 Linux 通配符来高效地管理和操作文件。涵盖的关键概念包括:

  1. 使用星号 (*) 通配符匹配任意数量的字符
  2. 使用问号 (?) 通配符精确匹配一个字符
  3. 使用方括号 [] 匹配特定字符或字符范围
  4. 将通配符应用于常见的文件操作,如列出、复制和删除文件

这些通配符技术是任何 Linux 用户必备的工具,在处理多个文件时可以节省时间并减少错误。它们使你能够使用简单、简洁的命令执行复杂的文件操作,而无需逐个处理每个文件。

当你继续使用 Linux 系统时,你会发现有很多机会应用这些通配符模式来简化工作流程并提高工作效率。