I have a directory with many files.
An executable <executable> has to be called with its name followed by all files in a directory (file_1 ... file_n) and an <outputfile>:
Example:
executable file_1 ... file_n outputfile
How can I read all files from the same directory and produce a string as above that can be executed?
CodePudding user response:
This script will print out the string you want with proper quoting on filenames:
#!/bin/bash
printf -v files '%q ' *
cmd="executable $files outputfile"
echo "$cmd"
You can actually execute the command with eval "$cmd". Use of eval is safe here since filenames are quoted properly.
CodePudding user response:
executable $(ls | xargs echo) outputfile
If you don't have spaces in the filenames.
