could you not write a script something along the lines of cp $1 /Users/joe/Library cp $1 /Users/bob/Library ... and name it filecp for instance. then all you have to type is filecp fileA as you add users you simply add a line to your script. This way it is portable to different computers and you are able to copy any file to that directory Raoul :-----Original Message----- :From: Mac OS X Unix [mailto:X-Unix at lists.themacintoshguy.com] :On Behalf Of James Bucanek :Sent: Thursday, March 11, 2004 10:11 AM :To: Mac OS X Unix :Subject: Re: [X-Unix] Copying to multiple directories : :Harvey Riekoff wrote on Wednesday, March 10, 2004: : :>I need to copy "fileA" to every users library folder in the Users :>directory. The file resides at t he root level. The command :that I have :>been using is: cp -r fileA /Users/*/Library. There is obviously :>something that I am doing wrong because nothing is copying. Any help :>would be appreciated. : :Harvey, : :The cp command's syntax is like this (use 'man ls' for the :gory details): : : cp source_file target_file : :- or - : : cp source_file [ source_file2 ...] target_directory : :You can either copy one to another file, or you can copy one :or more files to a single destination directory. : :Remembering Shell Lessons 101, the wildcard globbing is done :by the shell, not the tool. When you use 'cp -r fileA :/Users/*/Library' you aren't passing two arguments to the cp :command. You're passing 5: 'cp -r fileA /Users/A/Library :/Users/B/Library /Users/C/Library /Users/D/Library' : :The cp command gets this, looks at the last argument, sees :that it's a directory, and switches into the second mode. :That is, it will attempt to copy the first four arguments (one :file and three directories) into the last directory. : :The -r option is useless. There is no -r option for the cp command. : :If you meant -R, then it would have copyied the entire Library :folder of the first three users into the Library folder of the :last user. So you're lucky you used the wrong option! : :The solution to your problem is run the cp command once for :each destination user. So you use the commands : : cp fileA /Users/A/Library : cp filaA /Users/B/Library : : : Brian Medley wrote on Wednesday, March 10, 2004: : >$ ls -d /Users/*/Library | xargs -I % echo cp fileA % : >cp fileA /Users/bpm/Library : >cp fileA /Users/jasonp/Library : >cp fileA /Users/jmh/Library : :Brian's solution does this by using the ls command to list the :directory names (echo would had do it too), then pipes this :list to xargs. xargs takes, as input, a list of filenames and :executes a command with that list as the arguments. It's :primarily used to repeatedly executed commands with a list of :files that too long to fit on one command line, but Brian has :used it here with the -l (replace string) option to execute :the command once for each input line (i.e. each directory :name), replacing the '%' with the directory. So, xargs takes :the input (/Users/A/Library, /Users/B/Library, ...) and :inserts that into the template ('echo cp fileA %'), and :executes the command once for each. This results in the output : : cp fileA /Users/bpm/Library : cp fileA /Users/jasonp/Library : ... : :Brian obviously used the 'echo' command as a demonstration. :To do the actual copy, you'd omit that and let xargs execute :the actual cp command. : :A little less obscure solution is to write a loop, although :you're more likely to see this solution in a script. : : (this example is in tcsh; bash has a different syntax) : [whiterabbit:~] james% foreach i ( /Users/*/Library ) : foreach? echo cp fileA $i : foreach? end : cp fileA /Users/james/Library : cp fileA /Users/testing/Library : :The 'foreach' commands starts a loop that sets the 'i' :variable to each argument in the list. It then executes the :subsequent list of commands using a different value for i :until the list is exhausted. : :And finally, : :Harvey Riekoff wrote on Thursday, March 11, 2004: :>Also when I run the command "$ ls -d /Users/*/Library | xargs :-I % echo :>cp fileA %" I get the following message "su: $: Command not found" : :The '$' is not part of the command. It's Brian's bash command :prompt. The command starts with 'ls ...'. : :Hope that helps, : :James : :______________________________________________________ :James Bucanek <mailto:privatereply at gloaming.com> : :---------- :Check out the Mac OS X email list FAQ :http://www.themacintoshguy.com/lists/X.html : :To unsubscribe, E-mail to: <X-Unix-off at lists.themacintoshguy.com> :To switch to the DIGEST mode, E-mail to :<X-Unix-digest at lists.themacintoshguy.com> :Need help from a real person? Try. :<X-Unix-request at lists.themacintoshguy.com> : :---------- :$14.99 Unlimited Nationwide Mac Dialup and Mac Web Hosting :from your Mac ISP :Serious Mac Internet Solutions From NineWire! :http://macinternetaccess.com : :DVIator | Run Dual ADC displays on your G4 or just one on an :older Mac! :Dr. Bott | <http://www.drbott.com/prod/DVIator.html> : : Support | Support this list by clicking here before you buy! : this List | http://www.themacintoshguy.com/support.html : :OS X News, Dr.Mac, Forums, Tutorials, Tips, Hints, FAQ?s - :http://www.osxfaq.com :