
次のように、Jupiter 上の Linux ターミナル コマンドを使用して、「a」という名前のリストにファイル名のリストを表示できます。
a=!find . -type f \! -name '*.*' -print
拡張子のないファイル名にするには、Linux ターミナルで対応するコマンドを実行します。
find . -type f -exec sh -c '
for pathname do
pathname=$( basename "$pathname" )
printf "%s\n" "${pathname%.*}"
done' sh {} +
しかし、上記のような名前「a」を割り当てて、Jupyter でこのコマンドを実行するにはどうすればよいでしょうか。以下のコードは機能しませんでした。
a=!find . -type f -exec sh -c '
for pathname do
pathname=$( basename "$pathname" )
printf "%s\n" "${pathname%.*}"
done' sh {} +
行のインデントを変更してみましたが、構文エラーが発生したり、何も表示されませんでした。Jupiter の for ループのコマンド ラインを検索したところ、'!' はおそらく別の場所にあるはずです。どうすれば動作させることができますか?
答え1
同様の問題を抱えている人がいるかもしれないので、私は別の方法でこの問題を解決しました。私はコマンドラインを使用しました
a=!find . -type f \! -name '*.*' -print
これにより、拡張子付きのファイル名のリストが作成されました。各要素から拡張子を削除しました。
files = [os.path.splitext(fname)[0] for fname in a]