如何在 Jupyter 上使用 for 迴圈編寫 linux find 指令

如何在 Jupyter 上使用 for 迴圈編寫 linux find 指令

我可以使用 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]

相關內容