2

I do a mistake when trying to move files from one location to another. Now all files are moved, but there is a * concatenated at the end of all names.

How do I remove all *s from end of file names in command line?

Note: I'm working with an embedded system, there is not any Internet connection. Please provide solutions with no need to install new stuff.

Thanks in advance

2 Answers 2

5

There is a command called (in an excess of originality) rename, that allows you to rename files using regular expressions.

In this case, you probably want to do:

rename 's/\*//' files...

Which will remove the first * character found in each filename.

You can use rename -n to list the renames that will be performed without actually doing them if you're worried about the regex not being correct.

1
  • 2
    This will replace every * anywhere in a file name (not only at the end). s/\\*$// or 's/\*$//' would probably work better.
    – Silke
    Aug 13, 2012 at 12:10
5

Ubuntu comes with the rename command which can rename files by regular expressions.

If all your files are located in the same folder, you can simply do the following:

rename s/\\*$// *

(\\* is an escaped *, $ is the end of the file name. A match will be replaced with nothing.)

If all your files are in a directory structure, you can use find:

find / -exec rename s/\\*$// {} \;

Which executes rename /\\*$// on every file and directory on you system. Feel free to change the / to the folder in which the directory structure is located.

You must log in to answer this question.

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