2016-09-13 33 views
0

我想在同一個目錄中的文件夾中分組類似的文件。爲了給出一個更好的想法,我正在處理圖像數據集,其中包含具有不同文件名的幾個主題的圖像。但是我也會在數據集中爲每個主題創建10-15個圖像。因此,讓我們說主題A將有10個圖像命名爲A_1.png,A_2.png,A_3.png等。所以,同樣我們有n個主題。我必須將文件夾中的所有圖像與該主題相對應。我嘗試過使用python,但它無法達到正確的點。我們可以用bash或shell腳本來做到嗎?如果是,請告知。分組文件夾中的類似文件

+0

我看到這個確切的同樣的問題在今天早些時候。另一個發生了什麼? –

+0

查找文件名中的關鍵詞。如果有,那就放在相應的文件夾中。你可以在python中使用'if'A'in filename [i]:placeinFolderA'來做到這一點。你可以用'awk'對bash中的文件進行排序。 –

回答

0

試試看看這個代碼。我也爲測試目的放置了僞造的文件生成器。

謹慎步驟: 只有在您檢查一切正常後才做rm。

可能的改進 移動/重命名文件,而不是複製和在{1..5}去除

爲AAA;請觸摸SUBJA _ $ {aaa} .txt SUBJB _ $ {aaa} .txt SUBJC _ $ {aaa} .txt;在SUBJA SUBJB SUBJC做

爲MYSUBJ

的mkdir $ MYSUBJ

CP $ MYSUBJ * .TXT $ MYSUBJ/

RM $ MYSUBJ * .TXT

完成

+0

感謝您的回答。但你能更具體嗎?我如何迭代所有文件?我有接近20000個文件名,每個主題有10個羣集文件名。所以我必須迭代2000次。 – Praveen

+0

我認爲sanwill http://stackoverflow.com/users/6828349/sanwill很好地回答你的問題! –

1

我想在Shell腳本上提出這個建議,假設我在工作目錄上有A_1.png,A_2.png,A_3.png,B_1.png,B_2.png。在第一圈我用「_」作爲deliminator和2號循環,可以使用「A/B_」爲deliminator:

for _DIR in `ls -1 | grep png | awk -F"_" '{print $1}' | uniq`; 
do 
    mkdir $_DIR; 
    for _FILE in `ls -1 | grep $_DIR\_`; 
    do 
    cp $_FILE $_DIR/; 
    done; 
    find $_DIR; 
done; 

例如:

A 
A/A_1.png 
A/A_2.png 
A/A_3.png 
B 
B/B_1.png 
B/B_2.png 
+0

非常感謝@sanwill。 awk我很新。還沒有做過任何測試。會及時向大家發佈。 – Praveen

相關問題