ファイルの属性情報を同じにしたい
ファイルをコピーすると、作成日時の情報が喪失したり、しなかったり。イマイチ安定しない。
ファイルの作成日時って結構大事な指標で、ファイルを並べたり整理整頓したり、探したりに使えます。
だからこの情報が失われるとちょっと面倒なことが多い
cp --preserve=all src dest
ファイルタイムスタン、パーミッションを維持したままコピーする
でも、うっかりやっちゃったら?
ファイルのpreserved を忘れたままコピーしたとしたら?
削除してコピーし直し。なんだろうけど。ファイルの属性情報だけをコピーする方法がないかと思いました。
ファイルの属性情報をコピーする方法
ファイルの属性情報を同じにするには、中身ではなく、属性情報を限定してコピーすると大丈夫。
GNU coreutils の cp がこの機能に対応している。
実際にやってみた例。
- ファイルをtouch で作成して
- ファイル属性をコピーして
- ファイルを属性情報を確認してみる。
takuya@~/Desktop$ touch a takuya@~/Desktop$ cp --preserve=all --attributes-only IMG_1347.jpg a takuya@~/Desktop$ stat a File: 'a' Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 1000004h/16777220d Inode: 84448029 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 501/ takuya) Gid: ( 20/ staff) Access: 2016-03-14 21:18:49.000000000 +0900 Modify: 2016-03-13 04:16:57.000000000 +0900 Change: 2016-03-14 21:18:53.000000000 +0900 Birth: 2016-03-13 04:16:57.000000000 +0900
ポイントは preserve と --attribute-only の同時使用
--attributes-only のオプションだけでは、動作しなかった。ここでオカシイなと思って諦めてた。
--preserve と同時に使用する。
ちょっとややこしいね。
alias に登録しても良い。
.bash_aliases に次のように登録したら便利かもしれない。
alias cp='cp --preserve=all' alias cp_attribute="cp --preserve=all --attributes-only"