cp
command does not have an excludes option. One way to copy files ignores some files or directories is to create a tarball. The tar
command has an exclude option. The exclude patterns can be mentioned in a separate file and passed in to the tar command.# Directory StructureIn the above directory structure, I want to copy certain file to bin/BO but ignore others like .git, fla files in the res/icons directory, the build scripts etc. For that first create an file say buildExcludes with the exclude pattern.
BO
│ .git
│ .gitignore
│ books.html
│ book.js
│ build.sh
│ buildExcludes
│ main.js
│ manifest.json
│
├───bin
│ └───BO
│ │ books.html
│ │ books.js
│ │ main.js
│ │ manifest.json
│ │
│ └───res
│ └───icons
│ bo-128.png
│ bo-16.png
│ bo-256.png
│ bo-32.png
│ bo-48.png
│ bo-512.png
│ bo-64.png
│
└───res
└───icons
bo-128.png
bo-16.png
bo-256.png
bo-32.png
bo-48.png
bo-512.png
bo-64.png
bo.fla
Content of the exclude file is given below.
.gitCreate the tar, deflate to the destination directory and delete the tar once done.
.gitignore
bin
res/icons/*.fla
build.sh
buildExcludes
tar -cvf bo.tar * -X buildExcludes #create tar
tar -xvf bo.tar -C bin/BO/ #deflate to destination directory
rm -f bo.tar #cleanup