2013-03-31 45 views
-1

因此,我有一个音乐文件夹,其中包含所有混合在一起的不同文件格式。它结构良好:音乐/ [艺术家姓名]/[专辑名称],并在一个名为“Various”的文件夹中编辑相册。某些文件夹只包含.mp3,.m4a或.flac文件,而有些文件夹具有多种不同文件格式的相册。当然还有各种各样的封面艺术.jpeg,许多艺术家文件夹包含艺术家肖像的.jpeg,还有很多杂项.cue和.log文件以及其他垃圾。需要帮助编写一个脚本来将我的.flac文件分离到单独的文件夹库中

我想要结束的是.flac文件的独立音乐文件夹,保留现有的文件夹结构,将它们从现有的库中删除。我不想在我当前的图书馆中找到空文件夹,这些专辑只是在flac中。对于具有多种格式的相册文件夹,我希望将flacs与封面艺术一起移动到新库中,但当然也要保留现有的封面艺术。

我一直没有找到能够处理这个问题的应用程序,但我想到了一个shell脚本可能可以处理它。然而,我对bash很可怜,真的不想打破我的图书馆。

这些文件位于远程磁盘上,我可以通过mac,windows或linux访问,因此任何方法都是好的。

只是为了充分阐明,这里是我希望的代码逻辑:

  1. 找到的每个子目录包含.FLAC文件

  2. 复制/音乐各自在全部这些目录(和中间父目录)复制到/ FLAC中的新位置,但排除副本中的其他音频文件类型(.mp3,.m4a等)。

  3. 如果目录中没有其他音频文件类型比.flac,则删除整个目录。如果它有其他音频文件,只需删除.flac文件。

  4. 通过/ Music删除任何在其本身或任何子目录中都不包含音频文件的目录。

+3

你到目前为止尝试过什么? –

+0

我看了几个不同的备份工具,但我还没有找到一个可以非常具体的 - 有很多可以删除空文件夹,但由于许多flac-only文件夹包含其他文件,如jpegs,它赢得了' t是一个空文件夹,将被留下。 – user2229787

回答

0

首先创建一个新的父文件夹,例如, “MusicNew”应该相当于现有的“音乐”文件夹。然后假设你想要复制的子文件夹和文件类型的描述,下面的代码行应该工作。

IFS='\n' 
for i in `find Music -mindepth 2 -maxdepth 3 -type f -name "*flac"`; 
do 
    echo ${i}; 
    newfold=`echo ${i} | sed -e 's/Music/MusicNew/g'`; 
    filename=`basename ${i}`; 
    fulldirpath="${newfold:0:${#newfold} - ${#filename}}"; 
    echo $fulldirpath/${filename}; 
    mkdir -p ${fulldirpath}; 
    mv ${i} ${fulldirpath}/; 
done 
+0

嘿,谢谢你的帮助;然而,如果我的阅读技巧不是完全错误的,那么这个脚本将会保留原始版本?我要做的是完全拆分图书馆,从原始位置删除flacs。在我的原始问题上查看我的上面的评论,以充分解释我将要使用此操作的逻辑。 – user2229787

+0

而不是做一个'cp $ {i} $ {fulldirpath}'只需要执行'mv $ {i} $ {fulldirpath}' – iamauser

+0

这会带来其他文件(如.jpg的)吗?另外,如果在移动后它现在是空的,是否会删除原始包含的文件夹? – user2229787

1

这里的另一种方法:

find . -type f -name \*.flac -printf "%h\n" | 
sort -u | 
while read -r dirname; do 
    new="../flac/$dirname" 
    echo mkdir -p "$new" 
    echo mv "$dirname"/*.flac "$new" 
    jpgs=("$dirname"/*.jpg) 
    [[ ${#jpgs[@]} -gt 0 ]] && echo cp "$dirname"/*.jpg "$new" 
done 
  • find-printf会打印出每个FLAC文件的目录名(相对于当前目录
  • sort -u以便移除重复的 - 现在你有一个包含flac文件的目录列表
  • while循环遍历目录,c将目录层次结构放在另一个目录下(根据需要进行修改),移动flac文件,并在有的情况下复制jpg文件。

如果您满意,请删除echo命令。

+0

这太棒了,谢谢!我只是更新了我的原始问题以增加清晰度;这个答案(主要)会处理步骤1和2,但是步骤3和步骤4的任何提示? – user2229787

+0

如果没有其他音频文件,您想删除该目录。如果它有非音频文件呢? –

+0

以前只包含.flac文件和.jpegs的目录就是这种情况。如果它没有音频文件,我假设它意味着文件被移动,并且相关的非音频文件被复制。所以这个目录是不需要的。这是一个音乐库目录,因此每个文件夹都应该有音频文件或者带有音频文件的子目录。 – user2229787

相关问题