如何在Linux shell脚本中更改文件扩展名?

2024-01-12

我发现了一些在类似情况下执行此操作的示例,但这是我编写的唯一除了逐字运行命令之外执行任何操作的 shell 脚本,因此我正在努力将这些示例应用到我自己的情况中,并且需要一些手工操作持有

我只是想从 MP4 中批量抓取音频。该脚本的工作原理:

for f in *.mp4; 
    ffmpeg -i "$f" -f mp3 -ab 192000 -vn "mp3s/$f.mp3"
done

但这些文件都以 .mp4.mp3 结尾。如何去掉 mp4 部分?


如果您使用的是 bash

${f%%.mp4}

将给出不带.mp4扩大。

尝试像这样使用它:

for f in *.mp4; do
    ffmpeg -i "$f" -f mp3 -ab 192000 -vn "mp3s/${f%%.mp4}.mp3"
done

...并且不要忘记do关键字如给出的示例中所示。

解释

bash 手册(man bash) 状态:

${参数%word} ${参数%%word}

删除匹配的后缀模式。 这个词被扩展为产生 就像路径名扩展中的模式一样。如果模式匹配 参数扩展值的尾部,然后 扩展的结果是参数的扩展值 最短匹配模式(%'' case) or the longest matching pattern (the%%'' 案例)已删除。如果参数是@ 或*,模式去除操作依次应用于每个位置参数,扩展是结果 列表。如果参数是一个数组变量,下标为@或 *,模式移除操作应用于每个成员 依次排列数组,扩展就是结果列表。

这只是您可以对 shell 变量执行的众多字符串操作之一。他们的名字都是参数扩展.

That's as well the section label given in the bash manual. Thus man bash /paramter exp should bring you there fast. `

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Linux shell脚本中更改文件扩展名? 的相关文章

  • 我的线程图像生成应用程序如何将其数据传输到 GUI?

    Mandelbrot 生成器的缓慢多精度实现 线程化 使用 POSIX 线程 Gtk 图形用户界面 我有点失落了 这是我第一次尝试编写线程程序 我实际上并没有尝试转换它的单线程版本 只是尝试实现基本框架 到目前为止它是如何工作的简要描述 M
  • shell-out 值到 md5(加密)函数

    我正在寻找一种解决方案 我正在构建 JSON 记录 并需要在 JQ 中生成一些文本 但将此文本通过管道传输到 MD5 求和函数并将其用作键的值 echo first John last Big jq id first last md5 通过
  • 如何确保应用程序在 Linux 上持续运行

    我试图确保脚本在开发服务器上保持运行 它会整理统计数据并提供网络服务 因此它应该会持续存在 但一天中有几次 它会因未知原因而消失 当我们注意到时 我们只需再次启动它 但这很麻烦 并且某些用户没有权限 或专有技术 来启动它 作为一名程序员 我
  • CoAP数据包的大小是多少?

    我是这项技术的新手 有人可以帮助我了解一些疑问吗 Q 1 CoAP数据包的大小是多少 我知道有 4 字节固定标头 但是包括标头 选项和负载在内的最大大小限制是多少 Q 2 有像MQTT那样的Keep Alive的概念吗 它在UDP上工作 它
  • 内核模式下的线程(和进程)与用户模式下的线程(和进程)有什么区别?

    我的问题 1 书中现代操作系统 它说线程和进程可以处于内核模式或用户模式 但没有明确说明它们之间有什么区别 2 为什么内核态线程和进程的切换比用户态线程和进程的切换花费更多 3 现在 我正在学习Linux 我想知道如何在LINUX系统中分别
  • 如何在 Bash 中给定超时后终止子进程?

    我有一个 bash 脚本 它启动一个子进程 该进程时不时地崩溃 实际上是挂起 而且没有明显的原因 闭源 所以我对此无能为力 因此 我希望能够在给定的时间内启动此进程 如果在给定的时间内没有成功返回 则将其终止 有没有simple and r
  • 是否可以创建一个脚本来保存和恢复权限?

    我正在使用 Linux 系统 需要对一组嵌套文件和目录进行一些权限实验 我想知道是否没有某种方法可以保存文件和目录的权限 而不保存文件本身 换句话说 我想保存权限 编辑一些文件 调整一些权限 然后将权限恢复到目录结构中 将更改的文件保留在适
  • MySQL 中的创建/写入权限

    我的设备遇到一些权限问题SELECT INTO OUTFILE陈述 当我登录数据库并执行简单的导出命令时 例如 mysql gt select from XYZ into outfile home mropa Photos Desktop
  • Linux - 从第二个选项卡获取文本

    假设我们有这样的文件 一些文本11 一些文本12 一些文本13 一些文本21 一些文本22 一些文本23 文本由制表符分隔 我们知道第 1 列中的一些文本 但希望从第 2 列中获取文本 我知道我可以通过以下方式获取线路 grep somet
  • 我如何知道 C 程序的可执行文件是在前台还是后台运行?

    在我的 C 程序中 我想知道我的可执行文件是否像这样在前台运行 a out 或者像这样 a out 如果你是前台工作 getpgrp tcgetpgrp STDOUT FILENO or STDIN FILENO or STDERR FIL
  • 使用 Grep 查找两个短语之间的文本块(包括短语)

    是否可以使用 grep 来高亮所有以以下内容开头的文本 mutablePath CGPathCreateMutable 并以以下内容结尾 CGPathAddPath skinMutablePath NULL mutablePath 这两个短
  • 快速像素绘图库

    我的应用程序以每像素的方式生成 动画 因此我需要有效地绘制它们 我尝试过不同的策略 库 但结果并不令人满意 尤其是在更高分辨率的情况下 这是我尝试过的 SDL 好的 但是慢 OpenGL 像素操作效率低下 xlib 更好 但仍然太慢 svg
  • C++ Boost ASIO 简单的周期性定时器?

    我想要一个非常简单的周期性计时器每 50 毫秒调用我的代码 我可以创建一个始终休眠 50 毫秒的线程 但这很痛苦 我可以开始研究用于制作计时器的 Linux API 但它不可移植 I d like使用升压 我只是不确定这是否可能 boost
  • Urwid:使光标不可见

    我正在使用 urwid 它是一个用于在 ncurses 中设计终端用户界面的 Python 框架 但有一件事我在 urwid 中无法做到 而这在 Curses 中很容易做到 使光标不可见 现在 选择按钮时光标是可见的 而且看起来很丑 有办法
  • Windows CE 与嵌入式 Linux [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 现在我确信我们都清楚 Linux 与 Windows 桌面的相对优点 然而 我对嵌入式开发世界的了解却少得多 我主要对行业解决方案感兴
  • 在 C++ linux 中将 STRINGS 写入串口

    我知道这个问题遍布互联网 但仍然没有任何东西能让我完全解决这个问题 我想用 C linux 将数据写入 Propeller 板的串行端口 从控制台获取输入时程序运行良好 但是当我向它写入字符串时总是返回 ERROR Invalid comm
  • Capistrano 3 部署无法连接到 GitHub - 权限被拒绝(公钥)

    我使用 Capistrano v3 和 capistrano symfony gem 设置了以下部署脚本 我正在使用 Ubuntu 14 4 部署到 AWS EC2 实例 我正在连接从 AWS 下载的 pem 文件 我的deploy rb中
  • 从 systemd bash 内联脚本创建 filename_$(date %Y-%m-%d)

    我正在尝试执行systemd计时器并希望将执行脚本的输出保存在每个日期的文件中 这是我的ExecStart脚本中的 service file ExecStart bin bash c echo date Y m d gt gt home u
  • 限制 Imagemagick 使用的空间和内存

    我在 Rails 应用程序上使用 Imagemagick 使用 rmagick 但我的服务器 Ubuntu 不是很大 当我启动转换进程时 Imagemagick 占据了我的服务器 30GB HDD 的所有位置 内存 我想限制内存和 tmp
  • Fedora dnf 更新不起作用?

    当我尝试使用 update 命令更新 Fedora 22 时 sudo dnf update 我收到以下错误 错误 无法同步存储库 更新 的缓存 无法准备内部镜像列表 Curl 错误 6 无法解析主机名 无法解析主机 mirrors fed

随机推荐

  • 从数据库字段中删除特殊字符

    我有一个包含数千条记录的数据库 我需要删除其中一个字段以确保它只包含某些字符 字母数字 空格和单引号 我可以使用什么 SQL 从整个数据库的该字段中删除任何其他字符 例如斜杠等 update mytable set FieldName RE
  • Angular 7 - 我是否创建了太多订阅?

    我想知道我的代码是否会造成内存泄漏 Context 我有一个应该显示 应用程序 对象的组件类 它具有过滤和分页功能 我创建了一个方法加载应用程序数据 其中我订阅到 向 Web 服务发出请求后返回的 Observable 该方法在初始化时被调
  • 如何配置 spring-kafka 忽略格式错误的消息?

    我们的 Kafka 主题之一存在问题 该主题被DefaultKafkaConsumerFactory ConcurrentMessageListenerContainer组合描述here http docs spring io spring
  • 如何在 Firebase Cloud Storage 上创建存储桶

    我是一名 python 开发人员 我们使用 GCS Google 云存储 来存储过去几个月的图像 这很好 但对于 Android 来说 它需要将所有存储桶导入 Firebase Cloud Storage FCS 才能访问它 我们不需要任何
  • MySQL 中的字段递增是原子操作吗?

    我正在制作一个网站 我想在标准 MyISAM 表中增加一个计数器 简化示例 UPDATE votes SET num num 1 如果多个连接执行相同的查询 这会导致问题吗 或者 MySQL 会处理它并锁定表或其他措施以确保不存在冲突吗 写
  • Android ListView 项目在滚动时重叠

    我已经实施了一个ListView在我的应用程序中使用自定义实现CursorAdapter 我的问题是 每当我快速滚动到列表底部 启动应用程序后 有时我会发现所有绘制的 ListView 项目都相互重叠 如果我向后滚动或触摸其中一项 它们就会
  • 为什么我的数组无法正确打印? [复制]

    这个问题在这里已经有答案了 我正在尝试使用下面的代码编写一个简单的程序来创建一个一维数组 然后您可以使用索引号调用一个值 我在用java questions tagged java and eclipse questions tagged
  • 如何计算带有集合的列表中项目的出现次数?

    假设我有一个List
  • 如何在不停止单元格选择动画的情况下重新加载 UITableView

    当用户点击某个单元格时 我想更新我的UITableView 包括这个被点击的单元格的内容 最简单的方法是更新内部参数然后调用 self tableView reloadData 然而 reloadData立即停止我点击的单元格的漂亮的蓝色
  • QString 到 unicode std::string

    我知道有很多关于转换的信息QString to char 但我仍然需要对这个问题进行一些澄清 Qt提供QTextCodecs 要转换QString 内部以 unicode 形式存储字符 QByteArray 允许我检索char 它表示某种非
  • 推送到 CI 服务器内的 GitLab 存储库(部署密钥)

    GitLab 有这个很好的 部署密钥 功能 对于 CI 服务器读取和提取对存储库的访问权限非常有用 因为它们通常不需要更多功能 但是 我需要创建一个标签并将其推送到存储库 以标记从 master 分支构建的每个版本 更具体地说 我有一个 J
  • 字符串操作。查找 2 个索引之间的字符串

    给定一个字符串 例如 500 个字符 我想在索引 400 和索引 430 之间选择一个字符串 怎么写这样的函数呢 Thanks Use the string Substring http msdn microsoft com en us l
  • 将动态对象传递给角度模块的 forRoot()

    我正在使用该包ngx cookieconsent它将模块导入为 const cookieConfig NgcCookieConsentConfig cookie domain localhost theme block content po
  • SSIS foreach 与简单对象列表

    re SSIS http en wikipedia org wiki SQL Server Integration Services Foreach http msdn microsoft com en us library ms14172
  • 如何为一系列日期设置 Slack 提醒

    例如 我希望每天在我休息的日子里在特定频道中出现提醒 就像是 remind channel me will be on PTO 1 1 2016 until 1 5 2016 然后 在该范围内的每一天 频道中都会出现一条提醒 说明日期范围
  • Html 5视频标签和编解码器问题

    我有一个 mkv 文件 它的视频编解码器是avc 音频编解码器是ac3 如何将其放入 html5 视频标签中 我用
  • MsgWaitForMultipleObjects 的 C# 等效项是什么?

    我有一个带有报表模式 ListView 的 Windows 窗体 对于视图中的每个项目 我需要执行长时间运行的操作 其结果是一个数字 我在本机 win32 中执行此操作的方法是为每个项目创建一个工作线程 天真地 当然我不会创建无限数量的线程
  • 如何使用 Selenium 获取 Chrome 浏览器控制台日志 [INFO] 条目

    我在使用 Selenium 获取 chrome 浏览器控制台日志 INFO 条目时遇到问题 我收到的唯一级别类型的条目是错误 警告 严重 有没有办法获得与错误条目不同的内容 因为我需要获取 INFO 条目并根据其内容断言 我最近读到 Sel
  • 查找 C 程序中内存泄漏的最佳方法

    我正在尝试完成一项大学作业 评分标准指定 5 用于内存管理 特别是没有内存泄漏 据我了解 简单 C 程序中的内存泄漏仅是由程序放弃的指针引起的 即 malloc calloc etc 调用永远不会有相应的调用free 我的问题分为三部分 S
  • 如何在Linux shell脚本中更改文件扩展名?

    我发现了一些在类似情况下执行此操作的示例 但这是我编写的唯一除了逐字运行命令之外执行任何操作的 shell 脚本 因此我正在努力将这些示例应用到我自己的情况中 并且需要一些手工操作持有 我只是想从 MP4 中批量抓取音频 该脚本的工作原理