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


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.

  • 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 '12 at 12:10

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.

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.