在Linux系统中,文件后缀名(或称为扩展名)通常用于标识文件类型,虽然Linux不像Windows那样强制依赖后缀名关联程序,但用户和脚本常通过后缀名快速判断文件用途(如.sh为脚本、.tar.gz为压缩包),查看文件后缀名的方法多样,可通过命令行或图形界面实现,以下详细介绍几种常用方式。

命令行查看文件后缀名
命令行是Linux环境下最常用的操作方式,通过组合基础命令可灵活提取文件后缀名。
使用basename和cut命令组合
basename命令用于从路径中提取文件名,cut命令可按分隔符切割字符串,假设文件名为example.tar.gz,执行以下命令:
basename example.tar.gz | cut -d. -f2-
basename example.tar.gz提取结果为example.tar.gz;cut -d.指定为分隔符,-f2-表示从第二个字段开始输出,即tar.gz。
若需仅获取最后一个后缀(如gz),可调整cut的字段范围:
basename example.tar.gz | cut -d. -f3
使用awk命令
awk是强大的文本处理工具,可通过指定字段分隔符提取后缀名:
echo "example.tar.gz" | awk -F. '{print $NF}'
-F.设置字段分隔符为,$NF表示最后一个字段,输出gz。
若需获取所有后缀(如tar.gz),可修改print范围:

echo "example.tar.gz" | awk -F. '{print $(NF-1)"."$NF}'
使用Bash参数扩展
在Bash shell中,可通过参数扩展直接提取文件后缀名,无需调用外部命令,效率更高:
filename="example.tar.gz"
echo "${filename##*.}"
- 表示从字符串开头匹配最长模式,匹配所有字符直到最后一个,剩余部分即为后缀,输出
gz。
若需获取完整后缀链(如tar.gz),可改用单:
echo "${filename#*.}"
输出tar.gz(匹配第一个及之后的内容)。
遍历目录提取所有文件后缀名
若需批量查看目录下所有文件的后缀名,可结合for循环和参数扩展:
for file in *; do
if [ -f "$file" ]; then
echo "文件: $file, 后缀: ${file##*.}"
fi
done
图形界面查看文件后缀名
对于习惯图形界面的用户,主流Linux文件管理器(如Nautilus、Dolphin、Thunar)均支持显示文件后缀名,通常需手动开启:

- GNOME Nautilus(Ubuntu默认):打开文件管理器,点击右上角菜单图标(⋮)→ 勾选“偏好设置”中的“显示隐藏文件和备份文件”,或直接在文件名上右键选择“重命名”,查看后缀部分。
- KDE Dolphin(Kubuntu默认):点击“设置”→“配置Dolphin”→“高级选项”→“隐藏文件”,勾选“显示文件扩展名”。
- XFCE Thunar(Xubuntu默认):点击“编辑”→“首选项”→“文件列表”,勾选“显示文件扩展名”。
方法对比与适用场景
为更直观展示不同方法的特点,以下表格总结:
| 方法 | 命令示例 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
basename+cut |
basename file | cut -d. -f2- |
兼容性好,支持多后缀 | 需组合命令,稍显繁琐 | 简单单文件后缀提取 |
awk |
echo "file" | awk -F. '{print $NF}' |
灵活,支持复杂文本处理 | 需调用awk,性能略低 | 批量处理或格式化输出 |
| Bash参数扩展 | ${file##*.} |
无外部依赖,效率高 | 仅限Bash shell | 脚本中快速提取后缀 |
| 图形界面 | 文件管理器设置 | 直观,适合新手 | 需手动开启,自动化难 | 日常文件管理查看 |
相关问答FAQs
Q1:为什么Linux文件后缀名不重要,但还要查看?
A:Linux系统通过文件权限(可执行位)和魔数(Magic Number,如文件头标识)判断文件类型,而非依赖后缀名,即使将可执行文件命名为script.txt,赋予执行权限后仍可直接运行,但后缀名对用户和脚本具有提示作用(如.sh便于识别脚本、.log便于区分日志文件),可提升管理效率,因此仍需查看。
Q2:如何批量统计目录下所有文件的后缀名及其出现次数?
A:可结合find、awk和sort命令实现:
find . -type f -name "*" | awk -F. '{print $NF}' | sort | uniq -c | sort -nr
find . -type f查找当前目录下所有普通文件;awk -F. '{print $NF}'提取每个文件的后缀名;sort排序后缀名,uniq -c统计出现次数,sort -nr按次数降序排列。
输出结果示例:5 gz 3 txt 2 sh
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/33521.html