ディレクトリ構造とサイズが0のファイルをミラーリングする方法は?

ディレクトリ構造とサイズが0のファイルをミラーリングする方法は?

ディレクトリをミラーリングしようとしています。そして特定のディレクトリのファイル構造です。しかし、画像ファイルにサイズがないことを望みます。たとえば、次のディレクトリツリーがあるとします。

original_folder
├── images
│   ├── image1.jpg         (2 MB)
│   ├── image2.jpg         (3 MB)
├── videos
│   ├── video1.mp4         (300 MB)
│   ├── video2.mp4         (400 MB)

私は次のような出力が欲しい。

mirrored_folder
├── images
│   ├── image1.jpg         (0 b)
│   ├── image2.jpg         (0 b)
├── videos
│   ├── video1.mp4         (0 b)
│   ├── video2.mp4         (0 b)

次のコマンドを試してみましたoriginal_folder

cd original_folder
find . -name '*' -exec touch ../mirrored_folder/'{}' \;

ただし、このコマンドは実行を試みますtouch ../mirrored_folder/./images/image1.jpg。コマンドを混同することに注意してください。私がしたいことをどのように達成できますか?

ベストアンサー1

GNU cp(からコアツール)次のように実行できます。

cp -r --attributes-only original_folder/* mirrored_folder/

~から男CP:

--attributes-only

    ファイルデータはコピーされず、属性のみがコピーされます。
-R-r--recursive
    再帰的にディレクトリをコピーする


findOPがMacOSでxeと言うようにコマンドを使用し、cpコマンドに--attributes-onlyオプションはありません。

find original_folder/ -type d -exec \
    sh -c 'mkdir -p mirrored_folder/${1#*/}' _ {} \; \
-o -type f -exec \
    sh -c 'touch mirrored_folder/${1#*/}' _ {} \;

このソリューションは、プロパティ(デフォルト:モード、所有権、タイムスタンプ)を保持するソリューションとは異なり、新しいディレクトリとfindファイルを作成します。cp

おすすめ記事