2017-07-06 10 views
0

簡単な質問:ターミナルのいくつかのシェルスクリプトを使って、古いディレクトリ構造から新しいディレクトリ構造に画像を移動する必要があります。次のように古いファイル構造は次のとおりです。各FolderXで端末を使って新しいフォルダ構造にファイルを移動する

Parent.Folder -- Folder1 
       Folder2 
       Folder3 

、我々は複数のフォルダがあります。

CAM1 -- image1.jpg 
     image2.jpg 
     image3.jpg 

私は必要に:各CAMフォルダで

Folder1 -- CAM1 
      CAM2 
      CAM3 

を我々は画像を持っています次のようにフォルダ構造を切り替えます。

Parent.Folder -- CAM1 
       CAM2 
       CAM3 
私は、異なるサイズの多くのデータセットに適用する必要があるとして、

CAM1 -- Folder1 -- image1.jpg 
       -- image2.jpg 
       -- image3.jpg 
    -- Folder2 -- ...etc... 
    -- Folder3 -- ...etc... 

スクリプトを動的にする必要があります:含む

ありがとうございました。前もって感謝します!

+0

ネストループや['prename'](http://www.unix.com/man-page/linux/1/prename/)でもかなり簡単です。何を試しましたか? – anishsane

+0

私はターミナルでの経験がほとんどないので、まだ何も試していません。現時点で私は手動で行っていますが、これは理想的ではありません。 – Ross

答えて

1
$ cd parent.folder 
$ find . -type f 
./Folder3/CAM2/image3.jpg 
./Folder3/CAM2/image2.jpg 
./Folder3/CAM2/image1.jpg 
./Folder3/CAM1/image3.jpg 
./Folder3/CAM1/image2.jpg 
./Folder3/CAM1/image1.jpg 
./Folder2/CAM3/image3.jpg 
./Folder2/CAM3/image2.jpg 
./Folder2/CAM3/image1.jpg 
./Folder2/CAM2/image3.jpg 
./Folder2/CAM2/image2.jpg 
./Folder2/CAM2/image1.jpg 
./Folder2/CAM1/image3.jpg 
./Folder2/CAM1/image2.jpg 
./Folder2/CAM1/image1.jpg 
./Folder1/CAM3/image3.jpg 
./Folder1/CAM3/image2.jpg 
./Folder1/CAM3/image1.jpg 
./Folder1/CAM2/image3.jpg 
./Folder1/CAM2/image2.jpg 
./Folder1/CAM2/image1.jpg 
./Folder1/CAM1/image3.jpg 
./Folder1/CAM1/image2.jpg 
./Folder1/CAM1/image1.jpg 

$ for i in Folder*/CAM*/; do 
    mkdir -p "$(basename $i)"; 
    mv "$i" "$(basename "$i")/$(dirname "$i")"; 
    done 

$ find . -type f 
./CAM3/Folder2/image3.jpg 
./CAM3/Folder2/image2.jpg 
./CAM3/Folder2/image1.jpg 
./CAM3/Folder1/image3.jpg 
./CAM3/Folder1/image2.jpg 
./CAM3/Folder1/image1.jpg 
./CAM2/Folder3/image3.jpg 
./CAM2/Folder3/image2.jpg 
./CAM2/Folder3/image1.jpg 
./CAM2/Folder2/image3.jpg 
./CAM2/Folder2/image2.jpg 
./CAM2/Folder2/image1.jpg 
./CAM2/Folder1/image3.jpg 
./CAM2/Folder1/image2.jpg 
./CAM2/Folder1/image1.jpg 
./CAM1/Folder3/image3.jpg 
./CAM1/Folder3/image2.jpg 
./CAM1/Folder3/image1.jpg 
./CAM1/Folder2/image3.jpg 
./CAM1/Folder2/image2.jpg 
./CAM1/Folder2/image1.jpg 
./CAM1/Folder1/image3.jpg 
./CAM1/Folder1/image2.jpg 
./CAM1/Folder1/image1.jpg 

このコードでは、指定した特定のフォルダ構造を前提としています。質問で言及したことが現実と異なる場合、これはうまくいかないかもしれません。

+0

魅力的な作品です。ありがとうございました! – Ross

関連する問題