微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

对于目录中的每个子文件夹,删除指定扩展名的文件,只有存在同名+不同指定扩展名的文件

如何解决对于目录中的每个子文件夹,删除指定扩展名的文件,只有存在同名+不同指定扩展名的文件

我在 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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?