For about 200 files in a directory I would like to add the String 1_ to the beginning of all filenames.

The filenames are, for example, DATASET_X_Y_Z and the result should be 1_DATASET_X_Y_Z.

I don't know a thing about Shell scripting, but maybe there is a one liner for the terminal.


3 Answers 3

  • rename 's/^/1_/' * for renaming all files in the current directory


  • rename 's/^/1_/' DATASET* for renaming all files in the current directory starting with DATASET in their name

Explanation: the expression s/^/1_/ says: "replace the beginning of the filename (that means this symbol -> ^)' with 1_".

  • 2
    If your rename doesn't do this out of the box, you need to install prename (PERL rename).
    – user1359
    Jan 15, 2016 at 0:51

You can easily rename all the files in current directory typing (assuming you are using bash):

for i in *; do mv "$i" 1_"$i"; done

obviously take it with care; it will remane ALL the files in the current directory that are 'visible' (filename not starting with a '.')

  • 1
    This is the first correct solution I found, which can be used for appending something like .csv to a subset of files, with a changed wild card expression instead of *. +1 Nov 20, 2016 at 12:35
  • Wow! Loops on the CLI! This is new. :) Jul 27, 2019 at 16:26
  • tke it with care indeed if you get the second i wrong: for i in *; do mv "$i" b"$1"; done cheers to your files. you've been warned. (I backed up the folder before trying this. fortunately).
    – Neil
    Sep 24, 2021 at 22:10

You can use pyRenamer. It can be found in the Ubuntu software center. enter image description here The original file pattern should be {X} and the renamed file pattern should be 1_{1}

  • One of my favourite programs
    – Allan
    Jul 15, 2011 at 13:40

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.