首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Bash将.flac文件的目录(包括多个子目录)转换为.mp3s?[复制]

如何使用Bash将.flac文件的目录(包括多个子目录)转换为.mp3s?[复制]
EN

Stack Overflow用户
提问于 2021-02-19 06:54:20
回答 3查看 70关注 0票数 0

这个问题在这里已经有答案了:

遍历具有特定扩展名的所有文件,并对其执行某些操作

(2个答案)

11天前就关门了。

我有一个根目录及其子目录,所有子目录都包含.flac文件。我想将所有的.flac文件转换为.mp3文件,然后删除.flac文件,这样它们就不会占用过多的存储空间。

我有以下命令来转换.flac文件并删除它们,效果很好:

代码语言:javascript
复制
for f in *.flac; do flac -cd "$f" | lame -b 320 - "${f%.*}".mp3; done && rm -Rfv ./*.flac

你能帮助一个命令循环遍历根目录和子目录,然后执行转换和删除吗?谢谢你。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-02-19 07:12:09

只需设置globstar 选项并使用模式**/*.flac 匹配所有*.flac 当前目录及其子目录中的文件。此外,您可能希望更改逻辑以删除转换后的flac文件。

代码语言:javascript
复制
#!/bin/bash

shopt -s globstar
for f in **/*.flac; do
    flac -cd "$f" | lame -b 320 - "${f%.*}".mp3 # && rm "$f"
done

丢弃 #之前&& rm "$f"在确保它可以工作之后

票数 0
EN

Stack Overflow用户

发布于 2021-02-19 07:12:35

那怎么样?

代码语言:javascript
复制
for f in $(find . -type f -name \*.flac) ; do
  flac -cd "$f" | lame -b 320 - "${f%.*}".mp3 && rm "$f"
  done

它将取代每个*将当前目录树中的.flac转换为*.mp3并删除原始的

票数 0
EN

Stack Overflow用户

发布于 2021-02-19 07:22:36

代码语言:javascript
复制
find / -type f -iname '*.flac' | while read flac_file; do mp3_file=$(sed 's/\.flac/.mp3/gi' <<< ${flac_file}); flac -cd "${flac_file}" | lame -b 320 - "${mp3_file}"; [ -s "${mp3_file}" ] && rm -f "${flac_file}"; done
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66269365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档