Como escrever o comando linux find com for loop no Jupyter

Como escrever o comando linux find com for loop no Jupyter

Consigo ter uma lista de nomes de arquivos em uma lista chamada 'a' usando o comando do terminal linux em Júpiter da seguinte maneira;

a=!find . -type f \! -name '*.*' -print

Para ter os nomes dos arquivos sem extensões, o comando correspondente funciona no terminal Linux;

find . -type f -exec sh -c '
    for pathname do
        pathname=$( basename "$pathname" )
        printf "%s\n" "${pathname%.*}"
    done' sh {} +

Mas como posso executar este comando no Jupyter atribuindo-o a um nome 'a' como acima. O código abaixo não funcionou.

a=!find . -type f -exec sh -c '
        for pathname do
            pathname=$( basename "$pathname" )
            printf "%s\n" "${pathname%.*}"
        done' sh {} +

Também tentei alterar o recuo das linhas, recebo um erro de sintaxe ou nada. Da minha pesquisa na linha de comando do loop for em Júpiter, o '!' talvez deva estar em um local diferente. Como posso fazer isso funcionar?

Responder1

Resolvi esse problema de uma maneira diferente se alguém tiver um problema semelhante. Eu usei a linha de comando a=!find . -type f \! -name '*.*' -print

isso criou uma lista de nomes de arquivos com extensões. Eu removi as extensões de cada elemento.

files = [os.path.splitext(fname)[0] for fname in a]

informação relacionada