Is it possible to copy a structure of a directory only.
e.g.
I have a file with the following entries that is a result of a find :-
/dir1/dir2/file.dbf
/dir1/dir2/dir3/file1.dbf
/dir1/file.dbf
I want to copy these to a directory and keep the structure however starting at a new dir :
/newdir/dir1/dir2/file.dbf
/newdir/dir1/dir2/dir3/file1.dbf
/newdir/dir1/file.dbf
when I use the cp -R command, the problem is that because there is a file, it just copies the file and not the structure.
redirection from/to stdin or stdout [dash].
(cd /source/directory && tar cf - . ) | (cd /dest/directory && tar xpvf -)
# Move entire file tree from one directory to another
# [courtesy Alan Cox <a.cox@swansea.ac.uk>, with a minor change]
# 1) cd /source/directory Source directory, where the files to be moved are.
# 2) && "And-list": if the 'cd' operation successful, then execute the next command.
# 3) tar cf - . The 'c' option 'tar' archiving command creates a new archive,
# the 'f' (file) option, followed by '-' designates the target file as stdout,
# and do it in current directory tree ('.').
# 4) | Piped to...
# 5) ( ... ) a subshell
# 6) cd /dest/directory Change to the destination directory.
# 7) && "And-list", as above
# 8) tar xpvf - Unarchive ('x'), preserve ownership and file permissions ('p'),
# and send verbose messages to stdout ('v'),
# reading data from stdin ('f' followed by '-').
#
# Note that 'x' is a command, and 'p', 'v', 'f' are options.
# Whew!
# More elegant than, but equivalent to:
# cd source/directory
# tar cf - . | (cd ../dest/directory; tar xpvf -)
#
# cp -a /source/directory /dest/directory also has same effect.
MY apologies, but what I forgot to mention is that I dont want all the files in the tree.
e.g.
/dir1/dir2/file1.dbf
/dir1/dir2/dir3/file2.dbf
/dir1/file3.dbf
/dir1/dir2/anotherfile.txt
/dir1/dir2a/file2a.dbf
to
Thanks for the responses. What if I have my source listed in a file and want to use the for loop to do the copy. As mentioned, the copy works, but unfortunately does not copy the structure and only the file in the target dir.