This page is designed to give minor examples, and general principles for renaming multiple files at once from the command line based on given criteria and wildcards. Makes use of a command line for loop and the sed command.

Renaming multiple fastq files

  • Assume you have downloaded multiple fastq files which are of format: Samplename-Lane-runID-etc-etc.fastq ... the following command will rename all files to Samplename.fastq:
  • for f in *.fastq;do new_name=$(echo $file|sed 's/-*/.fastq/'); mv -i $file $new_name;done
    • Generic explanation in parts:
    • for f in *.fastq;
      • "for" is the start of a for loop which allows you to do the same thing to multiple files sequentially
      • generate a generic variable named "f" which is a list of all files in the current directory that end in ".fastq"
      • ; end the existing for loop generation
    • do new_name=$(echo $file|
      • do is what you want to do with each of the entries in the for loop
      • generate a new variable named "new name" with the starting point of the old file name, change the name based on the following sed command.
    • sed 's/-*/.fastq/');
      • "sed" is the name of the command to be called. it is effectively just a find and replace command. It has 3 parts separated by / marks, as follows:
        • "s" tells the command you are dealing with a string
        • "-*" says match everything after and including the first hyphen, change this according to the particular sample so you are sure that it is only matching what you want it to
        • ".fastq" says what you want to replace the matched text with
        • ; break apart the next command as if it were being executed on its own line
    • mv -i $file $new_name
      • "mv -i" is being used as a rename command here, with the -i flag meaning not to overwrite existing file name. This is important if your replacement string is wrong and you are generating multiple final names that are identical.
      • $file $new_name this uses the previously created in line variables to reference the existing file as well as the new name you want to name the file.
    • ;done
      • all for loops end with a "done" command

-- Main.DanielDeatherage - 21 Aug 2014

This topic: Lab > WebHome > ComputationList > ProtocolsMassRename
Topic revision: r4 - 2014-09-08 - DanielDeatherage