I am seeking to remove all special characters from several files' worth of downloaded .pdfs, and came across exactly the solution I was looking for, albeit in an OS X environment:

function to automatically remove special characters from file names during saving in MacOS X.

Could a similar method--either using sed or some other function--be implemented in a Linux environment?

up vote 11 down vote accepted

You can do this with the rename command. If you are in the folder with the .pdf files with special characters:

rename 's/[^a-zA-Z0-9]//g' *.pdf

This will remove any characters from files ending in .pdf that are not A-Z in either case, or numbers. You can add to this list:

rename 's/[^a-zA-Z0-9_]//g' *.pdf

This version allows underscores.

  • 1
    follow-up question: Would you know how to do this when the filename contains letters that aren't from English alphabet? When I try your commands I get "Can't rename filename: Invalid or incomplete multibyte or wide character" for each file. – user2044638 Jul 12 '13 at 9:56
  • @user2044638 Are you able to rename these files with a mv? – Paul Jul 12 '13 at 13:28
  • Yes. Worked for every file I tried it on without problems. – user2044638 Jul 12 '13 at 14:15
  • Hm, doesn't seem to be working for me. I installed the requisite util-linux package, and while it appears to run, there is no change in file names. Is there documentation for "rename" somewhere? – nitrl Jul 12 '13 at 14:30
  • 1
    @nitrl There are two separate "rename" utilities, one supports regex, the other doesn't. Check your man page to see which one you have. – Paul Jul 13 '13 at 0:24

To handle the whole file name and also multiple files:

  • Add /g to handle the whole file name.
  • Add _to replace with underscore (if required to)
  • Add any additional 'types' of files or individual file names at the end, space separated.

rename 's/[^a-zA-Z0-9_.]/_/g' *mp4 *avi

for file in *; do mv "$file" $(echo "$file" | sed -e 's/[^A-Za-z0-9.-]//g'); done &

  • 2
    While this may answer the question, it would be a better answer if you could provide some explanation why it does so. – DavidPostill Jul 4 '17 at 23:09
  • Actually the same as the accepted rename method but harder to enter without mistakes – xenoid Jul 4 '17 at 23:22

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.