Last updated on April 26th, 2020 at 11:14 am
I found many ways to return the almost same results. I just note down here as my cheatsheet to use next time.
find . -name "*.sql" -execdir sh -c 'printf "%s\n" "${0%.*}"' {} ';'
find "$PWD" -type f -iname "*.sql" -execdir basename {} .sql ';'
find . -type f -iname "*.sql" -exec basename {} .sql ';'
find . -name '*.sql' -exec bash -c 'printf "%s\n" "${@%.*}"' _ {} +
find . -iname '*.sql' -execdir basename -s '.sh' {} +
find . -name "*.sql" -exec sh -c 'printf "%s\n" "${0%.*}"' {} ';'
find "$PWD" -type f -iname "*.sql" -print | grep -o "[^\.]\+"
find "$PWD" -type f -iname "*.sql" -exec dirname "{}" ';' -exec basename "{}" .sql ';'
find . -type f -iname "*.sql" | sed 's/\.sql$//1'
find . -type f -iname "*.sql" -exec sh -c 'f=$(basename $1 .sql);d=$(dirname $1);echo "$d/$f"' sh {} \;
find . -type f -iname "*.sql" | grep -oP '.*(?=[.])'
find . | perl -a -F/ -lne 'print $F[-1] if /.*.sql/g'
find . -type f -iname "*.sql" -print | tr -d ".sql"
find . -type f -exec basename {} \;|perl -pe 's/(.*)\..*$/$1/;s{^.*/}{}'
find . -type f -exec basename {} \;|perl -pe 's/(.*)\..*$/$1/;s{^.*/}{}'|sort|uniq
find . -type f -iname '*.sql' -exec basename -s '.sql' {} +
for n in *.sql; do echo "${n%.sql}"; done