簡単な解決策は次のとおりです:
find . -type f -iname "*.ipynb" | sed 's/\.ipynb$//1'
拡張子のないファイル名のみを返すには、次を試してください:
find . -type f -iname "*.ipynb" -execdir sh -c 'printf "%s\n" "${0%.*}"' {} ';'
または (-type f
を省略) これから) :
find "$PWD" -iname "*.ipynb" -execdir basename {} .ipynb ';'
または:
find . -iname "*.ipynb" -exec basename {} .ipynb ';'
または:
find . -iname "*.ipynb" | sed "s/.*\///; s/\.ipynb//"
ただし、basename
を呼び出す @CharlesDuffy の提案は次のとおりです。
find . -iname '*.ipynb' -exec bash -c 'printf "%s\n" "${@%.*}"' _ {} +
または:
find . -iname '*.ipynb' -execdir basename -s '.sh' {} +
フル パスとファイル名 (拡張子なし) を同じ行に出力するには、以下を試してください:
find . -iname "*.ipynb" -exec sh -c 'printf "%s\n" "${0%.*}"' {} ';'
または:
find "$PWD" -iname "*.ipynb" -print | grep -o "[^\.]\+"
フルパスとファイル名を別々の行に出力するには:
find "$PWD" -iname "*.ipynb" -exec dirname "{}" ';' -exec basename "{}" .ipynb ';'