Answers:
假设您有一个文件,file1
您应该知道该文件具有相同的属性file2
(您知道它file2
具有正确的属性)。
$ stat file{1,2}
File: 'file1'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 1fh/31d Inode: 2326956 Links: 1
Access: (0600/-rw-------) Uid: ( 1000/ chris) Gid: ( 1000/ chris)
Access: 2013-12-24 09:53:20.248720441 +0800
Modify: 2013-12-24 09:53:20.248720441 +0800
Change: 2013-12-24 09:53:31.011984772 +0800
Birth: -
File: 'file2'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 1fh/31d Inode: 2326957 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ chris) Gid: ( 1000/ chris)
Access: 2013-12-24 09:53:21.045382001 +0800
Modify: 2013-12-24 09:53:21.045382001 +0800
Change: 2013-12-24 09:53:21.045382001 +0800
Birth: -
确保它们匹配的一种方法是检查file2
并手动应用属性:
$ chmod 644 file1
但是,这很难自动化和编写脚本。从属性中获取属性file2
并以file1
编程方式将其应用会更容易。
$ cp --attributes-only --preserve file2 file1
$ stat file1
File: 'file1'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 1fh/31d Inode: 2326956 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ chris) Gid: ( 1000/ chris)
Access: 2013-12-24 09:53:21.045382001 +0800
Modify: 2013-12-24 09:53:21.045382001 +0800
Change: 2013-12-24 09:57:06.320604649 +0800
Birth: -
--attributes-only
本身不做任何事情;它需要与其他属性保留标志结合使用。来自info cp
:
--attributes-only
Copy only the specified attributes of the source file to the
destination. If the destination already exists, do not alter its
contents. See the `--preserve' option for controlling which
attributes to copy.
--preserve
上面使用,它被记录为等效于--preserve=mode,ownership,timestamps
。在内部,您可以将其视为“不复制数据”而不是“仅复制属性”,这就是--preserve
无论如何都必须通过的原因。
如果您拥有智能手机,则可以在远离智能手机时从PC中选择音乐:
$ cp -rn --attributes-only ~/Music smartphone/Music
当您离开PC时,请删除目录,以后再复制。
$ cp -rn ~/Music smartphone/Music
您会选择音乐和空文件。