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

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.

  • Korthrun@lemmy.sdf.org
    link
    fedilink
    English
    arrow-up
    5
    ·
    edit-2
    5 months ago

    What’s the benefit of spawning a subshell and executing “ls” here instead of just passing a glob to your loop?

    $ for lol in /usr/share/*.lm;do printf "I found a file named '%s'\n" "$lol";done
    
    I found a file named '/usr/share/out-go.lm'
    I found a file named '/usr/share/ragel.lm'
    I found a file named '/usr/share/ril.lm'
    I found a file named '/usr/share/rlhc-c.lm'
    I found a file named '/usr/share/rlhc-crack.lm'
    I found a file named '/usr/share/rlhc-csharp.lm'
    I found a file named '/usr/share/rlhc-d.lm'
    I found a file named '/usr/share/rlhc-go.lm'
    I found a file named '/usr/share/rlhc-java.lm'
    I found a file named '/usr/share/rlhc-js.lm'
    I found a file named '/usr/share/rlhc-julia.lm'
    I found a file named '/usr/share/rlhc-main.lm'
    I found a file named '/usr/share/rlhc-ocaml.lm'
    I found a file named '/usr/share/rlhc-ruby.lm'
    I found a file named '/usr/share/rlhc-rust.lm'