使用shell脚本判断文件后缀的方法实例

使用Shell脚本判断文件后缀的方法有很多种,本攻略将向您展示两种常用方法。

方法一:使用shell内置变量${VAR##*CHAR}

使用该方法,只需在Shell命令中嵌入一个${VAR##*CHAR},其中CHAR指的是我们需要查找的字符或子串,VAR指的是要判断的文件名或路径。如果文件名以指定的字符或子串结尾,则返回空字符串。我们可以根据返回值是否为空判断文件是否以指定字符或子串结尾。

#!/bin/bash
filename=$1
suffix="jpg"
if [ -n "${filename##*$suffix}" ]; then
    echo "File $filename is not a jpg file."
else
    echo "File $filename is a jpg file."
fi

以上代码中,首先获取用户输入的文件名并保存到变量filename中。然后指定要判断的文件后缀名为jpg。在if语句中使用${filename##*$suffix}判断文件名是否以jpg结尾,如果不是,说明该文件不是一个jpg文件,输出提示信息;否则说明该文件是jpg文件,同样输出提示信息。

方法二:使用awk命令

另一种方法是使用awk命令,该命令最初设计是基于处理文本文件的,但它也可以用来处理一些简单的任务,例如提取文件名中的后缀。

#!/bin/bash
filename=$1
suffix=$(echo $filename | awk -F. '{print $NF}')
if [ "$suffix" != "jpg" ]; then
    echo "File $filename is not a jpg file."
else
    echo "File $filename is a jpg file."
fi

上述代码中,我们使用awk命令分割文件名字符串,并获取最后一个分割出来的字符串即为文件后缀。如果该后缀不是jpg,说明该文件不是一个jpg文件,输出提示信息;否则,说明该文件是一个jpg文件,同样输出提示信息。

总的来说,以上两种方法都可以很方便地判断文件是否符合指定的格式,根据实际需求选择使用即可。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用shell脚本判断文件后缀的方法实例 - Python技术站

(0)
上一篇 2023年6月26日
下一篇 2023年6月26日

相关文章

  • Linux基础学习之文件查找find的常见用法

    Linux基础学习之文件查找find的常见用法 在Linux系统中,文件查找是一项非常基础的技能,也是每个初学者必须掌握的技能之一。Linux系统提供了很多工具来搜索和查找文件,其中最著名的一个是”find”命令。本篇文章将为您介绍“find”命令的常见用法以及相应的实例说明。 命令语法 find [path…] [expression] 命令中的”pa…

    other 2023年6月26日
    00
  • 深入解析Java的设计模式编程中单例模式的使用

    深入解析Java的设计模式编程中单例模式的使用 什么是单例模式 单例模式是一种常用的创建型设计模式,它保证一个类只有一个实例,并且提供了能访问这个实例的全局访问点。在实际的开发中,单例模式被广泛应用。 单例模式的使用场景 在如下场景中,通常建议使用单例模式: 系统中只需要存在一个实例对象 系统频繁创建和销毁对象,造成大量的资源浪费时 全局操作都能够使用同一个…

    other 2023年6月27日
    00
  • 鼠标右键菜单没有显示卡属性和配置可交换显示卡选项的解决方法

    针对“鼠标右键菜单没有显示卡属性和配置可交换显示卡选项的解决方法”的问题,我给出以下完整攻略: 问题描述 当我们在计算机中右键点击桌面空白区或任意文件夹时,有时会发现鼠标右键菜单中没有显示卡属性和配置可交换显示卡选项。这种情况下,我们无法查看和调整显卡属性,也无法切换安装的不同显示卡。这会给我们的计算机使用造成一定的困扰。 解决方法 为了解决这个问题,我们需…

    other 2023年6月27日
    00
  • 分离与继承的思想实现图片上传后的预览功能:ImageUploadView

    “分离与继承的思想实现图片上传后的预览功能:ImageUploadView”是一种实现图片上传并预览的常用方法,下面将详细讲解如何实现这种功能。 步骤1:创建基类 首先,需要创建一个名为BaseImageUploadView的基类,用于实现图片上传功能。这个基类可以包含一些公共方法和属性,用来处理图片上传的逻辑,比如上传图片的最大大小和格式等。 from d…

    other 2023年6月26日
    00
  • ASP.NET DropDownList控件的使用方法

    ASP.NET DropDownList控件的使用方法 1. DropDownList控件简介 DropDownList控件是ASP.NET Web Forms中常用的控件之一,它可以创建类似HTML Select标记的下拉列表,并且可以与数据源绑定,使得下拉列表的选项由数据源提供。 2. DropDownList控件的基本用法 我们可以使用DropDown…

    other 2023年6月26日
    00
  • C语言中#define在多行宏定义出错的原因及分析

    C语言中#define在多行宏定义出错的原因及分析 1. 问题分析 在C语言中,使用宏定义可以方便地定义一些预处理常量或函数,可以方便地调用或替换某些代码块。一般地我们使用#define关键字加上变量名和值即可完成宏定义,例如: #define PI 3.1415926 但是,有时候我们需要定义一些多行的宏,例如为了更加方便地书写复杂语句。针对这种情况,C语…

    other 2023年6月26日
    00
  • java实现基于TCP协议网络socket编程(C/S通信)

    Java实现基于TCP协议网络Socket编程(C/S通信)攻略 什么是网络Socket编程? 网络socket编程就是通过Socket通信,在网络上完成通讯的过程。Socket通信是C/S架构中最常见和最为常用的一种通信方式。Socket通信要求通信的双方都存在一个程序,其中一个程序必须扮演客户端的角色,而另一个程序则扮演服务器的角色,客户端请求连接,服务…

    other 2023年6月27日
    00
  • C++设计模式之工厂模式

    接下来我将详细讲解C++设计模式之工厂模式的完整攻略。 工厂模式概述 工厂模式(Factory Pattern)是一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们使用一个工厂方法来创建对象,而不是直接通过new来创建。这样有助于我们实现松耦合和高内聚。 工厂模式的核心思想是定义一个用来创建对象的接口,让子类决定具体要实例化对象的类。这样…

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部