を感謝:
find . -name "*.ipynb" -execdir sh -c 'printf "%s\n" "${0%.*}"' {} ';'
か:
find "$PWD" -type f -iname "*.ipynb" -execdir basename {} .ipynb ';'
か:
find . -type f -iname "*.ipynb" -exec basename {} .ipynb ';'
しかしbasename
を呼び出します各ファイルには非効率なので、@CharlesDuffy sugg estionは次のとおりです。私たちはそれぞれのbashのインスタンスに複数のファイルを渡しているので、リスト全体が単一のコマンドラインに収まるならば、我々は一度だけのbashを呼び出す+
meansを使用して
find . -name '*.ipynb' -exec bash -c 'printf "%s\n" "${@%.*}"' _ {} +
。
試して、同じ行に(拡張子なし)の完全なパスとファイル名を印刷するには:
find . -name "*.ipynb" -exec sh -c 'printf "%s\n" "${0%.*}"' {} ';'
または:
find "$PWD" -type f -iname "*.ipynb" -print | grep -o "[^\.]\+"
を完全なパスとファイル名を印刷します別の行に:
find "$PWD" -type f -iname "*.ipynb" -exec dirname "{}" ';' -exec basename "{}" .ipynb ';'
'basename'を適用しますディレクトリコンポーネントも破棄します。 – user1934428
私はこれが頼まれていると信じて、拡張子のないファイル名だけをリストアップします。 – kenorb
ありがとうございます...あなたの答えは私の質問に最もよく答えます... –