Why does the error find: paths must precede expression: input.txt trigger when multiple results are returned from "find" in subprocess but not when a single result is returned?
The dir contains three files.
ls
input2.txt input.txt input.log
There is only one file matching the find query and the result can be assigned to $foo
$ foo=$(find . -name *.log )
echo $foo
./plot.log
When > 1
reults are returned find throw's an error.
$ foo=$(find . -name *.txt )
find: paths must precede expression: input.txt
I don't understand why this is happening.
You need to quote special characters, because globs are expanded before running the command:
find . -name '*.txt'
To see how globbing works, try for example echo *.txt
- it will only actually print *.txt
if there are no files in the current directory ending with .txt
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With