Date: Tue, 01 Oct 2002 21:14:06 +0200 From: Marc Perisa <perisa@porsche.de> To: Peter Leftwich <Hostmaster@Video2Video.Com> Cc: FreeBSD LIST <FreeBSD-Questions@FreeBSD.Org> Subject: Re: Copying directories contents Message-ID: <3D99F3FE.4070801@porsche.de> References: <20021001140103.G2271-100000@earl-grey.cloud9.net>
next in thread | previous in thread | raw e-mail | index | archive | help
Peter Leftwich wrote: > > I have often run into a similar situation. There doesn't seem to be a > command line or GUI file explorer you can use to "stitch together" source > directories and subdirectories into the target directory. For example, if > you have differing files but in the same exact folder tree structure, is > there a command to weave (mv) the files in? This would be a scheme that > favors only files and that runs a "test" of basically saying "is the > directory there already? yes, then mv this file into it, no, then create it > and move this file into it..." but on a wider scale. > # NOT TESTED! # little script, should work in ksh (and zsh && bash) SOURCE=/your/source/dir TARGET=/your/target/dir for i in `cd ${SOURCE}; find . -type d`; do if [[ -d $TARGET/$i ]] ; then mv $SOURCE/$i/* $TARGET/$i/ ; else mv $SOURCE/$i $TARGET/ ; fi ; done Before the mv you can actually test the files (or subdirs) for size, mtime, atime, .... But be careful as stated in the mv(1) man page: As the rename(2) call does not work across file systems, mv uses cp(1) and rm(1) to accomplish the move. The effect is equivalent to: rm -f destination_path && \ cp -pRP source_file destination && \ rm -rf source_file Perhaps you should read some tutorials about shell programming - it can come in really handy. Hope that helps Marc To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-questions" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3D99F3FE.4070801>