7

Rename all the files within a folder with prefix “Unix_” i.e. suppose a folder has two files a.txt and b.pdf than they both should be renamed from a single command to Unix_a.txt and Unix_b.pdf

1
  • 2
    I would call it a prefix, not a suffix.
    – jlliagre
    May 14, 2011 at 4:53

5 Answers 5

16
$ for f in * ; do mv "$f" Unix_"$f" ; done
8

The rename command can rename files using regular expressions, which makes it very powerful. In your case, you could do

rename 's/(.*)/Unix_$1/' *.txt
5
  • ... and the pdf-File? :) May 15, 2011 at 3:40
  • rename 's/(.*)/Unix_$1/' *.pdf
    – fromnaboo
    Jul 3, 2012 at 1:51
  • 1
    No need to capture, just replace the beggining-of-string: rename 's/^/Unix_/' *.pdf
    – mmoya
    Nov 12, 2013 at 23:03
  • this doesn't work for filenames starting with - which leads to the error Unknown option:...
    – mcExchange
    Jun 14, 2020 at 13:09
  • @mcExchange , have you tried with -- option? Normally, all standard utilities support the end of option processing option "double-dash". Just in case, there's also krename, and mrename. More with apt search rename if available, including repository source lists.
    – Artfaith
    Nov 5 at 2:03
3

If you're using Zsh as your shell, you could also use the function zmv.

Add this line to your .zshrc:

autoload -U zmv

then you could run:

% zmv -W '*' 'Unix_*'

See man zshcontrib for further information.

1
  • The more I read about zsh, the more I like it.
    – boehj
    May 15, 2011 at 3:34
3

With the rename utility included in the util-linux package (the one on dj_segfault's answer comes from perl), you could do rename '' Unix_ *

0

Some of the other answers might be better however, if I thought that xargs deserved a mention since it is a very powerful tool (and on many systems):

In this particular you could do:

ls | xargs -n1 -I{} mv {} Unix_{}

Edit: Retracted per Gilles' comment. For this situation this solution should be considered only a hack due to the caveats as pointed out by the cited article. The other answers are much better. I still think that xargs is still a useful tool (I use it with svn status relatively frequently), but he's right, for simple execute some command on all files in a tree of directories, this isn't the answer and find is much better. (Leaving the answer since the I think the comment is good for people who'd make the same mistake).

2

You must log in to answer this question.

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