any sysadmins up? shell question:

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Naja-ram
    Confirmed User
    • Aug 2006
    • 639

    #1

    any sysadmins up? shell question:

    I have a file I want to copy to a few directories at once.
    the file is located in /var/www/dir0/myfile.txt and I want to copy it to the following:
    /var/www/dir1/
    /var/www/dir2/
    /var/www/dir3/
    /var/www/dir4/

    so I tried to use:
    Code:
    cp /var/www/dir0/myfile.txt  /var/www/dir*/myfile.txt
    I got:
    Code:
    cp: copying multiple files, but last argument `/var/www/dir2/myfile.txt' is not a directory
    it is.

    I also tried
    Code:
    cp /var/www/dir0/myfile.txt /var/www/dir*/
    and got:
    Code:
    cp: omitting directory `/var/www/dir0'
    ofcourse I tried things like cp /var/www/dir0/myfile.txt /var/www/dir[0-9]/

    also tried using the -r parameter.



    I am root on the server.

    what'chya say?
    http://www.muslimmatrimonial.com/
  • PussyTeenies
    Confirmed User
    • Feb 2005
    • 6496

    #2
    use

    Code:
    for i in $(ls -1d /var/www/|grep -v dir0); do cp /var/www/dir0/myfile.txt /var/www/$i;done
    breakdown

    you make a listing of all directories except dir0
    then you copy the mytext to all directories found ;)
    Need adult hosting?

    Contact us!
    WARM Hosting

    Need an IT solution? or someone to check your site and security? Nossie - IT Professional

    Comment

    • PussyTeenies
      Confirmed User
      • Feb 2005
      • 6496

      #3
      ah and

      Code:
      cp: omitting directory `/var/www/dir0'
      thats just that you are trying a copy to a allready copying directory ;)

      hence the grep -v dir0 part in my anwser
      Need adult hosting?

      Contact us!
      WARM Hosting

      Need an IT solution? or someone to check your site and security? Nossie - IT Professional

      Comment

      • fuzebox
        making it rain
        • Oct 2003
        • 22352

        #4
        I'd do this:

        foreach `ls -d /var/www/dir?`;do cp /var/www/dir0/myfile.txt $i;done

        It'll throw up an error about /var/www/dir0 that you can ignore.

        At least this works in most installations...

        Comment

        Working...