2013-03-31 32 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

相關問題