[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: "install" running recursively..?



Julian Gilbey <J.D.Gilbey@qmw.ac.uk> writes:

> > Alexander Koch wrote:
> > > I have a source which has "samples/admin/" as a dir.
> > > Now I want to have a simple
> > > install -m 644 samples/* $(tmp)/usr/doc/$(pkg)/examples
> > > without touching the admin/ subdir at all.
> > > 
> 
> Assuming that this is in a Makefile (as hinted by $(pkg), you want
> this to read (remembering initial tabs):
> 
> 	for file in `find samples -type f`; do \
> 		install -m 644 $$file $(tmp)/usr/doc/$(pkg)/examples; \
> 	done
> 
> with a *double* dollar before file.

Of course, if you don't actually want to recurse, but just want the
files in the top level of the samples directory (I'm assuming you want 
to preserve the structure there):

	for file in `find samples/* -type f -print -type d -prune`; do \
 		install -m 644 $$file $(tmp)/usr/doc/$(pkg)/examples; \
 	done


Or even:
	for dir in `find samples -type d -print`; do
		install -d -m 755 $(tmp)/usr/doc/$(pkg)/examples/`echo $$dir | sed 's/^samples\///'`; \
	done
	for file in `find samples -type f -print`; do \
 		install -m 644 $$file $(tmp)/usr/doc/$(pkg)/examples/`echo $$file | sed 's/^samples\///'`; \
 	done

Which preserves the directory structure.  Of course if there are only
a few directories, it's simpler to do

	install -d -m 755 $(tmp)/usr/doc/$(pkg)/examples/admin
	install -d -m 755 $(tmp)/usr/doc/$(pkg)/examples/otherdir

And then:
	for file in `find samples/* -type f -print -type d -prune`; do \
 		install -m 644 $$file $(tmp)/usr/doc/$(pkg)/examples; \
 	done
	for file in `find samples/admin/* -type f -print -type d -prune`; do \
 		install -m 644 $$file $(tmp)/usr/doc/$(pkg)/examples/admin; \
 	done
	for file in `find samples/otherdir/* -type f -print -type d -prune`; do \
 		install -m 644 $$file $(tmp)/usr/doc/$(pkg)/examples/otherdir; \
 	done


Reply to: