Copy folder recursively, excluding some folders
I am trying to write a simple bash script that will copy the entire contents of a folder including hidden files and folders into another folder, but I want to exclude certain specific folders. How could I achieve this?
Use rsync:
rsync -av --exclude='path1/to/exclude' --exclude='path2/to/exclude' source destination
Note that using source and source/ are different. A trailing slash means to copy the contents of the folder source into destination . Without the trailing slash, it means copy the folder source into destination .
Alternatively, if you have lots of directories (or files) to exclude, you can use --exclude-from=FILE , where FILE is the name of a file containing files or directories to exclude.
--exclude may also contain wildcards, such as --exclude=*/.svn*
Use tar along with a pipe.
cd /source_directory
tar cf - --exclude=dir_to_exclude . | (cd /destination && tar xvf - )
You can even use this technique across ssh.
You can use find with the -prune option.
An example from man find :
cd /source-dir
find . -name .snapshot -prune -o ( ! -name *~ -print0 )|
cpio -pmd0 /dest-dir
This command copies the contents of /source-dir to /dest-dir, but omits
files and directories named .snapshot (and anything in them). It also
omits files or directories whose name ends in ~, but not their con‐
tents. The construct -prune -o ( ... -print0 ) is quite common. The
idea here is that the expression before -prune matches things which are
to be pruned. However, the -prune action itself returns true, so the
following -o ensures that the right hand side is evaluated only for
those directories which didn't get pruned (the contents of the pruned
directories are not even visited, so their contents are irrelevant).
The expression on the right hand side of the -o is in parentheses only
for clarity. It emphasises that the -print0 action takes place only
for things that didn't have -prune applied to them. Because the
default `and' condition between tests binds more tightly than -o, this
is the default anyway, but the parentheses help to show what is going
on.
链接地址: http://www.djcxy.com/p/78142.html
上一篇: 使用NSObjects帮助将文件保存到文档NSMutableArray
下一篇: 递归复制文件夹,排除一些文件夹
