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

Sunday, April 25, 2010 - 6:39 pm
By Colin
Bookmark and Share
  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).
Bookmark and Share

Leave a Reply