次のような構成のフォルダを想定します。
$ find 1 1 1/1.txt 1/2-1 1/2-1/2-1.txt 1/2-1/3 1/2-1/3/3.txt 1/2-2 1/2-2/2-2.txt 1/2-2/3-1 1/2-2/3-1/3-1.txt 1/2-2/3-2 1/2-2/3-2/3-2.txt
この構成からディレクトリのみをtoフォルダへコピーすることを考えます。以下のコマンドではfromディレクトリのみをtoディレクトリ配下に作成しています。
$ find 1 -type d | xargs -I dir mkdir to/dir
実行結果
$ find to to to/1 to/1/2-1 to/1/2-1/3 to/1/2-2 to/1/2-2/3-1 to/1/2-2/3-2
名前に空白が入る場合は、findに-print0、xargsに-0をつけます。
アクセス権や所有者、更新日時もコピーする場合は、それぞれchmod、chwon、touchを利用します。
$ find 1 -type d | xargs -I dir chmod --reference=dir to/dir $ find 1 -type d | xargs -I dir chown --reference=dir to/dir $ find 1 -type d | xargs -I dir touch -mr dir to/dir
関連:
xargsを利用して処理を並列的に実行させる
UNIX findとxargsコマンドで-print0オプションを使う理由
参考になりました!ありがとうございます。
返信削除