
我可以使用 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 {} +
但是我如何在 Jupyter 上運行這個命令,將其分配給上面的名稱“a”。下面的程式碼不起作用。
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]