2016-09-13 8 views
0

同様のファイルを同じディレクトリのフォルダにグループ化したいと思います。良いアイデアを与えるために、私は画像データセットに取り組んでいます。そこでは、ファイル名が異なる複数の被写体の画像があります。しかし、データセットには1件あたり10〜15枚の画像があります。つまり、A科目AにはA_1.png、A_2.png、A_3.pngという10の画像があるとします。したがって、同様に私たちはn件の科目を持っています。私はその被写体に対応するすべての画像を持つフォルダに被写体をグループ化する必要があります。私はPythonを使用してみましたが、私はポイントに正しく到達することができませんでした。 bashやシェルスクリプトを使ってそれを行うことはできますか?はいの場合は助言してください。類似のファイルをフォルダにグループ化する

+0

私は今日早く、この全く同じ質問を見ました。他の人は何が起こったのですか? –

+0

ファイル名でキーワードを探します。それがある場合は、対応するフォルダに配置します。ファイル名[i]:placeinFolderA'で 'if" A "を使って、これをPythonで行います。あなたは 'awk'でbashのファイルをソートすることができます。 –

答えて

0

このコードを試してください。私はテスト目的のために偽のファイルジェネレータも置いています。

プルデンシャルステップ: すべてを確認した後にのみOKです。

可能な改善 移動/リネームファイルの代わりに、コピーおよび{1..5}でaaaため

を除去します。 SUBJA _ $ {aaa} .txt SUBJB _ $ {aaa} .txt SUBJC _ $ {aaa} .txt;をタップします。 SUBJA SUBJB SUBJC

行う

ます。mkdir $ MYSUBJ

CP $ MYSUBJ * .txtの$ MYSUBJ/

のrm $ MYSUBJ * .txtの

にMYSUBJため

を行って完了

+0

あなたの答えをありがとう。しかし、あなたはもっと具体的になりますか?すべてのファイルをどのように反復するのですか?私は、件名ごとに10のクラスタ化されたファイル名を持つ20000に近いファイル名を持っています。だから私は2000回繰り返しなければならない。 – Praveen

+0

私はsanwill http://stackoverflow.com/users/6828349/sanwillあなたの質問にうまく答えたと思います! –

1

シェルスクリプトでこれを提案したいと思います。作業ディレクトリにA_1.png、A_2.png、A_3.png、B_1.png、B_2.pngがあると仮定します。例えば

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; 

::私はdeliminatorとして、私はdeliminatorとして「A/B_」を使用し、第2ループに「_」を使用最初のループで

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にはかなり新しいです。 Haventはそれについてまだテストをしていません。あなたは投稿し続けるでしょう。 – Praveen

関連する問題