UNIX/AWK Tricks: How to copy a long list of files into a directory

Sunday, April 25, 2010 - 6:39 pm
By Colin
  1. Make your list of files, with complete paths, call it “imgList.txt”. Put every file on a new line.
  2. Write a small awk script with the following 1 line:
    { printf(“cp %s images/\n”,$0);}
  3. Save the script as “copyList.awk”
  4. Do the following command:
    awk -f copyList.awk imgList.txt | sh

Brief explanation of the awk script:

  • %s means you’re putting a string in that spot of your output,
  • $0 is the string you’re putting there
  • $0 is a match for each line in the file “imgList.txt”
  • images/ is the directory to copy your files to (in this example relative to where the command will be run from – can be absolute, of course)
  • \n stands for new line

brief explanation of the command:

  • awk executes the awk code found in “copyList.awk” on the lines found in “imgList.txt” and pipes the output to the shell ( | sh).

2 Responses to “UNIX/AWK Tricks: How to copy a long list of files into a directory”

  1. Don Joe

    Or you could just do everything with awk and use system().
    { system(“cp \”" $0 “\” images”) }
    The \” are so that the $0 argument is getting surrounded by “” ‘s so that if there are any spaces in the path, then the copy will still work.

  2. johnres

    You can use Long Path Tool, for such problems, it works good…….


Leave a Reply