Berikut solusi sederhananya:
find . -type f -iname "*.ipynb" | sed 's/\.ipynb$//1'
Untuk mengembalikan hanya nama file tanpa ekstensi, coba:
find . -type f -iname "*.ipynb" -execdir sh -c 'printf "%s\n" "${0%.*}"' {} ';'
atau (menghilangkan -type f
mulai sekarang) :
find "$PWD" -iname "*.ipynb" -execdir basename {} .ipynb ';'
atau:
find . -iname "*.ipynb" -exec basename {} .ipynb ';'
atau:
find . -iname "*.ipynb" | sed "s/.*\///; s/\.ipynb//"
namun memanggil basename
pada setiap file bisa jadi tidak efisien, jadi saran @CharlesDuffy adalah:
find . -iname '*.ipynb' -exec bash -c 'printf "%s\n" "${@%.*}"' _ {} +
atau:
find . -iname '*.ipynb' -execdir basename -s '.sh' {} +
Untuk mencetak jalur lengkap dan nama file (tanpa ekstensi) di baris yang sama, coba:
find . -iname "*.ipynb" -exec sh -c 'printf "%s\n" "${0%.*}"' {} ';'
atau:
find "$PWD" -iname "*.ipynb" -print | grep -o "[^\.]\+"
Untuk mencetak jalur lengkap dan nama file pada baris terpisah:
find "$PWD" -iname "*.ipynb" -exec dirname "{}" ';' -exec basename "{}" .ipynb ';'