すべてのディレクトリ (例: 、...) からイメージ フォルダをCase-r20-c020-t001-da1
、Case-r20-c020-t001-dan
元のディレクトリ名 (例: Case-r20-c020-t001-da1
、...)を維持しながら新しいパスにコピーするにはどうすればよいでしょうCase-r20-c020-t001-dan
か。次のようなディレクトリ構造があるとします。
Case-r20-c020-t001-da1/
|____image/ <<<< This is a folder that has some pictures
|______ jpg
|______ png
|____infromation/ <<<< This is a folder.
|_______ text1.txt
|_______ text2.txt
|____ file1.txt
Case-r20-c020-t001-da2/
|____image/
|______ jpg
|______ png
|____infromation/
|_______ text1.txt
|_______ text2.txt
|____ file1.txt
: .
Case-r20-c020-t001-dan/ <<< n goes from 3,...20.
|____image/
|______ jpg
|______ png
|____infromation/
|_______ text1.txt
|_______ text2.txt
|____ file1.txt
私の最初の試みは以下の通りです。
for f in Case-r20-c020-t001-da*;do (cp -r images /path/folder*);done
したがって、上記を新しいディレクトリにコピーすると、出力は次のようになります。
Case-r20-c020-t001-da1_images/
|____image/
|______ jpg
|______ png
Case-r20-c020-t001-da2_images/
|____image/
|______ jpg
|______ png
: .
Case-r20-c020-t001-dan_images/
|____image/
|______ jpg
|______ png
私は1つのコマンドであることを好みます。
ご協力いただければ幸いです。
ありがとう、
答え1
小さなスクリプトにするとわかりやすくなりますが、ここでは 1 つのコマンドとして記述します。わかりやすくするために 2 行に分割されています。行を結合する場合は、バックスラッシュを削除してください。
for old in /old/path/Case-r20-c020-t001-da*; \
do new="/new/path/$(basename $old)_images"; mkdir -p "$new" && cp -r "$old/image" "$new/"; done