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.
ls | grep txt$
will return only files ending “txt”What’s the purpose of a pipe and an execution of “grep” here?
ls
returns a list of files, the pipe passes that list to grep. The grep only returns results that match the string. The
symbol represents an end of line.
That’s my bad, I asked an incomplete question.
What does the approach of spawning a grep process and having ls send ALL of it’s output to grep have over just passing a glob to ls?
Like:
$ ls /usr/share/*.lm /usr/share/out-go.lm /usr/share/ril.lm /usr/share/rlhc-crack.lm /usr/share/rlhc-d.lm /usr/share/rlhc-java.lm /usr/share/rlhc-julia.lm /usr/share/rlhc-ocaml.lm /usr/share/rlhc-rust.lm /usr/share/ragel.lm /usr/share/rlhc-c.lm /usr/share/rlhc-csharp.lm /usr/share/rlhc-go.lm /usr/share/rlhc-js.lm /usr/share/rlhc-main.lm /usr/share/rlhc-ruby.lm
for i in ``ls *.png``; do something $i; done;
(not formatting correctly)
Is this sort of what you mean? You can tune the loop, but essentially you build a list of the files you want to do something against, then loop through it.
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'
The benefit is I get taught something new!