如何使用 Bash 将 .flac 文件的目录(包括多个子目录)转换为 .mp3?
How do I convert a directory (including multiple subdirectories) of .flac files to .mp3s using Bash?
我有一个包含子目录的根目录,所有子目录都包含 .flac 文件。我想将所有 .flac 文件转换为 .mp3 文件,然后删除 .flac 文件,这样它们就不会占用过多的存储空间 space.
我有以下命令来转换 .flac 文件并删除它们,效果很好:
for f in *.flac; do flac -cd "$f" | lame -b 320 - "${f%.*}".mp3; done && rm -Rfv ./*.flac
能否请您帮忙在根目录和子目录上循环执行命令,然后执行转换和删除?谢谢。
只需设置 globstar
选项并使用模式 **/*.flac
来匹配当前目录及其子目录中的所有 *.flac
文件。此外,您可能想要更改删除转换后的 flac 文件的逻辑。
#!/bin/bash
shopt -s globstar
for f in **/*.flac; do
flac -cd "$f" | lame -b 320 - "${f%.*}".mp3 # && rm "$f"
done
在确保它可以工作后,在 && rm "$f"
之前删除 #
怎么样
for f in $(find . -type f -name \*.flac) ; do
flac -cd "$f" | lame -b 320 - "${f%.*}".mp3 && rm "$f"
done
它将当前目录树中的每个 *.flac 替换为 *.mp3 并删除原始文件
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
我有一个包含子目录的根目录,所有子目录都包含 .flac 文件。我想将所有 .flac 文件转换为 .mp3 文件,然后删除 .flac 文件,这样它们就不会占用过多的存储空间 space.
我有以下命令来转换 .flac 文件并删除它们,效果很好:
for f in *.flac; do flac -cd "$f" | lame -b 320 - "${f%.*}".mp3; done && rm -Rfv ./*.flac
能否请您帮忙在根目录和子目录上循环执行命令,然后执行转换和删除?谢谢。
只需设置 globstar
选项并使用模式 **/*.flac
来匹配当前目录及其子目录中的所有 *.flac
文件。此外,您可能想要更改删除转换后的 flac 文件的逻辑。
#!/bin/bash
shopt -s globstar
for f in **/*.flac; do
flac -cd "$f" | lame -b 320 - "${f%.*}".mp3 # && rm "$f"
done
在确保它可以工作后,在 && rm "$f"
之前删除 #
怎么样
for f in $(find . -type f -name \*.flac) ; do
flac -cd "$f" | lame -b 320 - "${f%.*}".mp3 && rm "$f"
done
它将当前目录树中的每个 *.flac 替换为 *.mp3 并删除原始文件
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