如何在 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]

相关内容