find -exec with multiple commands find -exec with multiple commands bash bash

find -exec with multiple commands


find accepts multiple -exec portions to the command. For example:

find . -name "*.txt" -exec echo {} \; -exec grep banana {} \;

Note that in this case the second command will only run if the first one returns successfully, as mentioned by @Caleb. If you want both commands to run regardless of their success or failure, you could use this construct:

find . -name "*.txt" \( -exec echo {} \; -o -exec true \; \) -exec grep banana {} \;


find . -type d -exec sh -c "echo -n {}; echo -n ' x '; echo {}" \;


One of the following:

find *.txt -exec awk 'END {print $0 "," FILENAME}' {} \;find *.txt -exec sh -c 'echo "$(tail -n 1 "$1"),$1"' _ {} \;find *.txt -exec sh -c 'echo "$(sed -n "\$p" "$1"),$1"' _ {} \;