Using ls
to parse file names is not recommended for multiple reasons
https://mywiki.wooledge.org/ParsingLs
Let’s say we have a directory with two files in it.
Helloworld.txt
Hello, world.txt
Now we want to loop over the files. If we use ls
in our for loop,
for file in $(ls); do echo "$file" ; done
We receive the following output
Hello,
world.txt
Helloworld.txt
The space in “Hello, world.txt” is translated as a new line. This could break our script.
Here is a better way
for file in * ; do echo "$file" ; done
Helpful links