| folderA1 | fileA11, fileA12, ...
folderA | folderA2 | fileA21, fileA22...
| ... | ...
次のように表現してコピーしたいと思います。
| folderA1 | folderA11, folderA12, ...
folderB | folderA2 | folderA21, folderA22, ...
| ... | ...
元のフォルダA(およびその構造)はそのまま残ります(変更されていません)。
私フォルダ(フォルダ)Bはフォルダ自体を除く(フォルダ)Aのすべてのファイルを意味します.また、元のフォルダ(A)のディレクトリ構造を維持したいと思います。
使用この問題上記のビルドを達成できますが、フォルダA自体が含まれています。
find source/. -type d -exec mkdir -p dest/{} \; \
-o -type f -exec mkdir -p dest/{} \;
良い:
| | folderA1 | folderA11, folderA12, ...
folderB | folderA | folderA2 | folderA21, folderA22, ...
| | ...
答え1
そこからcd
入り、folderA
次のコマンドを実行できます。
cd folderA
find . -type d -o -type f -exec bash -c '
for path; do mkdir -p "/path/to/folderB/${path/file/folder}"; done
' bash {} +
パラメータ拡張は${path/file/folder}
それぞれfileXY
の名前をfolderXY
。
各フォルダにファイルが含まれている場合は、そのファイルを削除できます-type d -o
。