Skip Navigation

How do you check if a file ends in a certain file extension in bash?

Seriously. There doesn't seem to be a way to do this. Every thing I ever try I just get bad substitution errors. The internet is full of people posting code that's supposed to compare file extensions but none of it works. I've spent all morning trying everything I could find. I already gave up and I'm making this progeam in python instead but now I'm curious. How tf do you actually compare file extensions? If I have a folder fill of files and I want to run a command only on the png files, there seems to be no way to actually do this.

If someone posts "[[ $file == *.txt ]]" I'm going to fucking scream because THAT DOES NOT WORK. IT'S NOT VAILD BASH CODE.


You're viewing a single thread.

  • File extensions are just a text based convention. Renaming a file to end in .PDF does not make the file a valid PDF.

    You're really saying there's no way for a posix shell to take the text to the right of the last "." character and then do simple string comparison on the result?

    Also why can't you just use normal globbing to feed arguments to your command? Why do you need to involve flow control?