Home Switchboard Unix Administration Red Hat TCP/IP Networks Neoliberalism Toxic Managers
May the source be with you, but remember the KISS principle ;-)
Skepticism and critical thinking is not panacea, but can help to understand the world better

How to rename files with special characters in names

News Recommended Books Recommended Links Unix Find Tutorial/Using -exec option with find mv command

ln command

Unix Find Tutorial
Saferm -- wrapper for rm command Finding World Writable, Abandoned and other Abnormal Files ls command Unix History Admin Horror Stories



Let's assume that we have a file with spaces in it (or worse with special characters) and want to rename it to normal file. One way to do this is to use asterisk or dot in place of those characters in name. For example
if you have a file "my windows file with spaces.html" you can try

mv my*spaces.shtml "my_normal_file.html
If this method does not work, then find command can get you out of trouble.

First, we need to determine the file or directory's inode.

For example

ls -lhi *.html

Then use the find command with the inode of the troublemaker, for example:

find . -type f -inum 31467125 -exec mv {} new_name.html \;

To simply delete such a file you can use option -delete of GNU find:

find . -type f -inum 314167125 -delete

Top updates

Bulletin Latest Past week Past month
Google Search


Old News ;-)

Spaces and special characters in a Linux file name

Why some file names cause trouble

You can have weird file names on your Linux system if you want. For example, nothing prevents you from having spaces in a file name. You can also use some strange characters in a file name, like &, *, \, $, and ? . The problems start when you try to use these file names at the command line.

You see, when you type commands at the prompt, spaces are often used for separating different commands, the command's arguments, or different files. The shell doesn't know that the bunch of text that follows your command is in fact one single file name. However, there's an easy way to tell the shell that the bunch of text is just one file name, so having spaces in a file name usually isn't a big problem.

A more problematic thing is special characters in file names. There are some characters that have a special meaning to the bash shell. For example, * and ? are wildcards and $ means a variable. If you can avoid using these characters in normal file names, do avoid it. If you have no idea what are wildcards or why $ means a variable, you have even more reasons to avoid these characters in normal file names!

Anyway, if you have files with spaces or special characters in their names, you have two ways of dealing with them: quoting the file name or escaping the confusing characters.

< Method 1: quoting >

This is very straightforward: put the file name in single quotes ( ' ) so spaces or special characters won't bother you anymore:
$ cat 'File With Spaces.txt'

See why the quotes are so important? If you don't use them, cat tries to view three different files: File, With and Spaces.txt.

Or another example:
$ rm 'File*.txt'

Here the quotes are even more important! Because * is a shell wildcard that matches any character, you'll be in a big trouble if you don't use the quotes. Without the quotes the shell removes File*.txt as intended, but in addition File.txt, File2.txt, File22.txt and others will get removed.

< Method 2: escaping >

Another way to deal with special characters in a file name is to escape the characters. You put a backslash ( \ ) in front of the special character or space. This makes the bash shell treat the special character like a normal character:
$ cat File\ With\ Spaces.txt

$ rm File\*.txt

But what to do if the file name contains the \ character? Well, you escape it too!
$ rm File\\.txt

Of course you can also use the quotes:
$ rm 'File\.txt'

It's a matter of personal taste which method you use, quoting or escaping, but personally I prefer quoting. It's much more straightforward in my opinion. However, quoting doesn't always work. For example, if you want to use shell wildcards with a file that has special characters in its name, it's impossible to use quoting because that would escape the wildcards as well, so in these cases it's necessary to escape the special characters with a backslash.

HOWTO delete-rename files with special characters (! ~ %)

May 16, 2011 | Technical notes, my online memory
Sometimes you (or your code) screws up and you end up with a filename that is hard to address on the filename because it has special characters in its name. In some cases you can get away with prepending a ./ or quoting, or escaping with backslash. When those don't work, this can get you out of trouble.

First, grab the file or directory's inode:

ls -lhi
Then use the find command with the inode of the troublemaker:
find . -type f -inum 25167125 -exec mv {} binary_safe \;

Recommended Links

Top Visited

Bulletin Latest Past week Past month
Google Search


The Last but not Least Technology is dominated by two types of people: those who understand what they do not manage and those who manage what they do not understand ~Archibald Putt. Ph.D

Copyright 1996-2018 by Dr. Nikolai Bezroukov. was initially created as a service to the (now defunct) UN Sustainable Development Networking Programme (SDNP) in the author free time and without any remuneration. This document is an industrial compilation designed and created exclusively for educational use and is distributed under the Softpanorama Content License. Original materials copyright belong to respective owners. Quotes are made for educational purposes only in compliance with the fair use doctrine.

FAIR USE NOTICE This site contains copyrighted material the use of which has not always been specifically authorized by the copyright owner. We are making such material available to advance understanding of computer science, IT technology, economic, scientific, and social issues. We believe this constitutes a 'fair use' of any such copyrighted material as provided by section 107 of the US Copyright Law according to which such material can be distributed without profit exclusively for research and educational purposes.

This is a Spartan WHYFF (We Help You For Free) site written by people for whom English is not a native language. Grammar and spelling errors should be expected. The site contain some broken links as it develops like a living tree...

You can use PayPal to make a contribution, supporting development of this site and speed up access. In case is down you can use the at


The statements, views and opinions presented on this web page are those of the author (or referenced source) and are not endorsed by, nor do they necessarily reflect, the opinions of the author present and former employers, SDNP or any other organization the author may be associated with. We do not warrant the correctness of the information provided or its fitness for any purpose.

The site uses AdSense so you need to be aware of Google privacy policy. You you do not want to be tracked by Google please disable Javascript for this site. This site is perfectly usable without Javascript.

Last modified: February, 21, 2019