简介
Linux 通配符是特殊字符,允许你根据文件名中的模式一次性搜索和操作多个文件。它们是在命令行环境中高效管理文件的强大工具。在这个实验中,你将学习如何使用不同的通配符,基于模式匹配执行常见操作,如列出、复制和删除文件。
Linux 通配符是特殊字符,允许你根据文件名中的模式一次性搜索和操作多个文件。它们是在命令行环境中高效管理文件的强大工具。在这个实验中,你将学习如何使用不同的通配符,基于模式匹配执行常见操作,如列出、复制和删除文件。
星号 *
是 Linux 中最常用的通配符。它代表文件名中的任意数量的字符(包括零个字符)。这使得它在处理具有相似命名模式的文件组时非常有用。
让我们来练习使用星号通配符:
首先,打开你的终端并导航到项目目录:
cd ~/project
为这个实验创建一个练习目录并进入该目录:
mkdir -p wildcard_practice
cd wildcard_practice
现在,让我们创建一些示例文件以供操作:
touch file1.txt file2.txt file3.txt document1.pdf document2.pdf image.jpg
使用 ls
命令列出目录中的所有文件:
ls
你应该会看到你刚刚创建的所有文件:
document1.pdf document2.pdf file1.txt file2.txt file3.txt image.jpg
现在,让我们使用星号通配符只列出文本文件:
ls *.txt
这个命令应该只显示以 .txt
结尾的文件:
file1.txt file2.txt file3.txt
你还可以使用通配符来匹配以特定模式开头的文件。要列出所有以 "file" 开头的文件:
ls file*
这个命令应该显示:
file1.txt file2.txt file3.txt
要列出所有 PDF 文档:
ls *.pdf
这个命令应该显示:
document1.pdf document2.pdf
星号通配符非常灵活,可以在模式中的任何位置使用。例如,*1*
可以匹配文件名中任意位置包含 "1" 的任何文件。
问号 ?
通配符代表恰好一个字符。当你想匹配名称相似但在特定位置只有一个字符不同的文件时,它非常有用。
让我们来探究一下问号通配符是如何工作的:
确保你仍然在 wildcard_practice
目录中:
cd ~/project/wildcard_practice
让我们创建一些额外的文件,以便更好地演示问号通配符:
touch file-a.txt file-b.txt file-c.txt test1.log test2.log test3.log
要列出所有“file-?.txt”文件,其中 ?
代表一个字符:
ls file-?.txt
这个命令应该显示:
file-a.txt file-b.txt file-c.txt
同样,要列出所有“test?.log”文件:
ls test?.log
输出应该是:
test1.log test2.log test3.log
你可以组合多个问号来匹配多个单个字符。例如,要匹配所有名称形式为“file?”的文本文件:
ls file?.txt
这应该显示:
file1.txt file2.txt file3.txt
当你需要匹配在特定位置有变化的特定模式时,问号通配符特别有用。例如,如果你想要以单个数字后跟 .log
结尾的文件:
ls test?.log
问号通配符比星号更具针对性,因为它恰好匹配一个字符,而星号可以匹配任意数量的字符。
方括号 []
通配符允许你指定一组或一个范围的字符,用于匹配文件名中特定位置的字符。这比星号或问号通配符提供了更高的精度。
让我们来练习使用方括号通配符:
确保你仍然在 wildcard_practice
目录中:
cd ~/project/wildcard_practice
让我们创建一些额外的文件以供操作:
touch data-1.csv data-2.csv data-3.csv data-a.csv data-b.csv
要列出在特定位置有数字的文件,你可以使用带有范围的方括号表示法:
ls data-[1-3].csv
这应该显示:
data-1.csv data-2.csv data-3.csv
同样,要列出在该位置有字母的文件:
ls data-[a-z].csv
这应该显示:
data-a.csv data-b.csv
你还可以在方括号内列出特定的字符。例如,要列出“data-”后面是 '1' 或 'a' 的文件:
ls data-[1a].csv
这应该显示:
data-1.csv data-a.csv
方括号内的脱字符 ^
符号表示取反匹配。要列出所有“data-”文件,但不包括以“1”或“2”结尾的文件:
ls data-[^12].csv
这个命令应该显示:
data-3.csv data-a.csv data-b.csv
当你需要匹配在特定位置有特定字符差异的文件时,方括号提供了精确的控制。
既然我们已经了解了不同类型的通配符,那么让我们使用它们来执行常见的文件操作,例如复制、移动和删除文件。
首先,确保你位于 wildcard_practice
目录中:
cd ~/project/wildcard_practice
让我们创建一个备份目录来存储文件副本:
mkdir backup
使用星号通配符将所有文本文件复制到备份目录:
cp *.txt backup/
让我们验证文件是否已正确复制:
ls backup/
你应该会在备份目录中看到所有文本文件:
file-a.txt file-b.txt file-c.txt file1.txt file2.txt file3.txt
现在,让我们创建另一个目录来组织不同类型的文件:
mkdir csv_files pdf_files log_files
将所有 CSV 文件移动到 csv_files
目录:
mv *.csv csv_files/
将所有 PDF 文件移动到 pdf_files
目录:
mv *.pdf pdf_files/
将所有日志文件移动到 log_files
目录:
mv *.log log_files/
让我们检查每个目录是否包含正确的文件:
echo "CSV Files:"
ls csv_files/
echo "PDF Files:"
ls pdf_files/
echo "Log Files:"
ls log_files/
输出应显示每个目录中相应的文件。
最后,让我们清理备份目录,删除所有名称中包含数字的文本文件:
rm backup/file[0-9].txt
验证备份目录中是否仅保留了名称为字母的文本文件:
ls backup/
输出应显示:
file-a.txt file-b.txt file-c.txt
这些示例展示了通配符如何极大地简化文件管理任务,否则这些任务可能需要多个命令或手动处理单个文件。
在本次实验中,你学习了如何使用 Linux 通配符来高效地管理和操作文件。涵盖的关键概念包括:
这些通配符技术是任何 Linux 用户必备的工具,在处理多个文件时可以节省时间并减少错误。它们使你能够使用简单、简洁的命令执行复杂的文件操作,而无需逐个处理每个文件。
当你继续使用 Linux 系统时,你会发现有很多机会应用这些通配符模式来简化工作流程并提高工作效率。