我正在制作文件同步程序。为了提高同步的效率,我只对来自源的新文件/文件夹进行同步/复制。无论如何,当我将目录复制到同步时,我使用'cp pR itemName ,因为它保留了目录和图标的属性(如果它存在)。但是,遗憾的是它还复制了该目录中包含的所有文件...我不希望复制子项(除了一些不可见的文件),我想一次复制一个项目。有没有一种方法可以自己编程复制目录(不包括它的子文件)但仍然保留它的属性(如创建日期和图标)?
答案 0 :(得分:0)
您想使用rsync。 Rsync创建所有文件的列表,并仅复制已修改的文件。这真的很快。 我做
rsync -avzr filesIwant WhereItShouldGo
但是,为了回答你的问题,你可以列出文件并用grep排除你不想要的文件并使用xargs,运行你的行动。 让我们说你跑了ls,这就是你得到的
#:~ cy$ ls
BackEnd Downloads Pictures
CSC 130 Library Public
Checkbook.java Movies Site and Code
Desktop Music Sites
Documents NetBeansProjects
并且假设您想要所有内容,而不是音乐文件夹或电影文件夹中的任何内容 你可以这样做:
#:~ cy$ ls | grep -v Music | grep -v Movies
BackEnd
CSC 130
Checkbook.java
Desktop
Documents
Downloads
Library
NetBeansProjects
Pictures
Public
Site and Code
Sites
通知电影和音乐未列出。那么现在你可以运行xargs并执行操作。因为我不想删除任何东西,我不会这样做,但这就是它的样子
#:~ cy$ ls | grep -v Music | grep -v Movies| xargs -I xx cp xx ToSomePlace
xargs的-I命令从最后一个命令获取输入,并给它一个昵称,在我的情况下" xx"这样你就可以在xx上调用命令,知道它们都是最后一个命令的元素。希望有所帮助。