如何解决对于目录中的每个子文件夹,删除指定扩展名的文件,只有存在同名+不同指定扩展名的文件
我在 15 年的 DJ 生涯中收集了大量音乐。
几年前,我决定主要购买/下载 FLAC 格式的音乐。从那以后,我在使用这种格式时遇到了问题——我演奏的许多俱乐部/节日都会提供不支持 FLAC 文件的非行业标准 Pioneer CDJ 卡座。
我现在已将我的整个数字图书馆转换(并煞费苦心地重建)为通用 CDJ 格式 aifF。每个转换后的 aifF 文件都放置在与原始 FLAC 文件相同的文件夹位置。我现在只剩下我不再需要的原始 FLAC 文件了。
我想:
删除文件夹中存在的具有 .flac 扩展名的文件,对于父目录中的每个文件夹,仅当存在具有匹配文件名的 .aif/aiff/aifc 文件时。任何没有相应 .aiff 的 .flac 文件,显示在(Finder?)列表中进行转换。
- MUSIC
- Artist A
+ track1.flac [*delete]
+ track1.aiff
- Artist B
+ track2.flac [*delete]
+ track2.aiff
- Artist C
+ track3.flac [*add to finder list for conversion?]
*我的音乐库文件夹是
我不太确定该怎么做……我的编码/脚本水平非常基础。
我在 Mac 机器上。
任何帮助将不胜感激!
解决方法
删除文件夹中存在的具有 .flac 扩展名的文件,对于父目录中的每个文件夹,仅当存在具有匹配文件名的 .aif/aiff/aifc 文件时。任何没有相应 .aiff 的 .flac 文件,显示在(Finder?)列表中以供转换。
#!/usr/bin/env bash
shopt -s extglob
to_convert=()
for file in **/*.flac; do
flac=$file
aiff="${file%.flac}.aiff"
if [[ -e "$aiff" ]]; then
rm -i "$aiff"
else
toconvert+=("$flac")
fi
done
echo "You still have to convert:"
printf " %s\n" "${toconvert[@]}"
研究:https://mywiki.wooledge.org/BashGuide,bash数组,在shel中循环文件,bash中扩展glob extglob
,参数扩展。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。