查找目录下同名但不同后缀名文件的shell脚本代码

yizhihongxing

查找目录下同名但不同后缀名文件的Shell脚本代码攻略

要编写一个Shell脚本来查找目录下同名但不同后缀名的文件,可以按照以下步骤进行:

  1. 获取用户输入的目录路径。
  2. 遍历目录下的所有文件。
  3. 提取文件名和后缀名。
  4. 使用关联数组(associative array)来存储同名文件的后缀名。
  5. 输出同名但不同后缀名的文件。

下面是一个完整的Shell脚本代码示例:

#!/bin/bash

# 获取用户输入的目录路径
read -p \"请输入目录路径: \" directory

# 遍历目录下的所有文件
for file in \"$directory\"/*; do
    # 提取文件名和后缀名
    filename=$(basename \"$file\")
    extension=\"${filename##*.}\"
    filename=\"${filename%.*}\"

    # 使用关联数组来存储同名文件的后缀名
    if [[ -n ${files[$filename]} ]]; then
        files[$filename]+=\" $extension\"
    else
        files[$filename]=$extension
    fi
done

# 输出同名但不同后缀名的文件
for filename in \"${!files[@]}\"; do
    extensions=\"${files[$filename]}\"
    count=$(echo \"$extensions\" | wc -w)
    if [[ $count -gt 1 ]]; then
        echo \"文件名: $filename\"
        echo \"后缀名: $extensions\"
        echo
    fi
done

示例说明

示例一

假设目录路径为/home/user/documents,该目录下有以下文件:

  • file1.txt
  • file1.doc
  • file2.txt
  • file2.pdf
  • file3.txt

运行脚本后,输出如下:

文件名: file1
后缀名: txt doc

文件名: file2
后缀名: txt pdf

脚本找到了同名但不同后缀名的文件file1.txtfile1.doc,以及file2.txtfile2.pdf

示例二

假设目录路径为/home/user/pictures,该目录下有以下文件:

  • image1.jpg
  • image1.png
  • image2.jpg
  • image3.png

运行脚本后,输出如下:

文件名: image1
后缀名: jpg png

脚本找到了同名但不同后缀名的文件image1.jpgimage1.png

这些示例说明了脚本如何在给定目录下查找同名但不同后缀名的文件,并输出它们的文件名和后缀名。你可以根据需要修改脚本以适应不同的情况。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:查找目录下同名但不同后缀名文件的shell脚本代码 - Python技术站

(0)
上一篇 2023年8月5日
下一篇 2023年8月5日

相关文章

  • CentOS 5.5 最新版下载地址 比较流行的服务器操作系统

    CentOS 5.5 最新版下载地址 比较流行的服务器操作系统攻略 CentOS是一种基于Red Hat Enterprise Linux(RHEL)源代码的自由开源操作系统,被广泛用作服务器操作系统。本攻略将详细介绍如何下载最新版的CentOS 5.5,并提供两个示例说明。 步骤一:访问CentOS官方网站 首先,访问CentOS官方网站以获取最新版的Ce…

    other 2023年8月4日
    00
  • 批处理经典入门教程!(从不懂到高手)第5/5页

    下面我就来详细讲解一下“批处理经典入门教程!(从不懂到高手)第5/5页”的完整攻略。 目录 前言 一、常用命令 二、批处理入门案例 三、批处理高阶应用 四、结语 前言 这篇教程主要介绍批处理的经典入门教程,包括常用命令、批处理入门案例和批处理高阶应用等内容。本教程适用于批处理的初学者,通过本教程的学习,能够了解批处理的基本知识,以及掌握批处理脚本编写的方法。…

    other 2023年6月26日
    00
  • Vue3 通过作用域插槽实现树形菜单嵌套组件

    Vue3 通过作用域插槽实现树形菜单嵌套组件攻略 在Vue3中,我们可以使用作用域插槽(Scoped Slots)来实现树形菜单的嵌套组件。作用域插槽允许我们在父组件中定义子组件的模板,并将数据传递给子组件进行渲染。下面是一个详细的攻略,包含了两个示例说明。 步骤1:创建树形菜单组件 首先,我们需要创建一个树形菜单组件,用于显示菜单的层级结构。在这个组件中,…

    other 2023年7月27日
    00
  • 模仿combox(select)控件,不用为美化select烦恼了。

    下面我将详细讲解如何模仿combox(select)控件,不用为美化select烦恼的完整攻略。 一、前言 在前端开发中,常常会遇到需要美化select控件的情况,而原生的select控件却难以满足我们的需求。本篇攻略将教你如何使用HTML、CSS和JavaScript制作一个类似于combox(select)控件的效果,同时保留原生select的所有功能。…

    other 2023年6月26日
    00
  • c#为所有checkbox添加事件

    以下是C#为所有checkbox添加事件的完整攻略,包括两个示例说明。 1. 添加事件 可以使用以下代码为所有checkbox添加事件: foreach (Control control in this.Controls) { if (control is CheckBox) { ((CheckBox)control).CheckedChanged += n…

    other 2023年5月9日
    00
  • Go语言中的延迟函数defer示例详解

    Go语言中的延迟函数defer示例详解 延迟函数(defer)是Go语言中的一个特性,它允许我们在函数执行完毕后执行一些清理操作。在本攻略中,我们将详细讲解延迟函数的使用,并提供两个示例说明。 基本语法 延迟函数使用defer关键字后跟一个函数调用来定义。当包含defer语句的函数执行完毕后,延迟函数会按照它们被定义的顺序逆序执行。 下面是延迟函数的基本语法…

    other 2023年8月20日
    00
  • HTML 代码编写的30条技巧

    HTML 代码编写的30条技巧攻略 HTML 是一种用于创建网页的标记语言,掌握一些技巧可以帮助你更高效地编写 HTML 代码。以下是30条技巧的详细讲解: 1. 使用语义化标签 使用语义化标签可以增加代码的可读性和可维护性。例如,使用 <header> 标签表示页面的页眉,使用 <nav> 标签表示导航栏。 示例: <head…

    other 2023年9月6日
    00
  • python中if嵌套命令实例讲解

    Python中if嵌套命令实例讲解 在Python中,我们可以使用if语句来进行条件判断。有时候,我们需要在一个条件满足的情况下再进行更细致的判断,这时就可以使用if嵌套命令。if嵌套命令允许我们在一个if语句的代码块中再嵌套另一个if语句的代码块,以此类推。 下面是一个详细讲解if嵌套命令的攻略,包含两个示例说明。 示例一:判断一个数的正负和奇偶性 num…

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