31

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.

2

3 Answers 3

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

or

  • 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_".

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
27

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 '.')

3
  • 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
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}

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

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .