Cómo escribir el comando de búsqueda de Linux con bucle for en Jupyter

Cómo escribir el comando de búsqueda de Linux con bucle for en Jupyter

Puedo tener una lista de nombres de archivos en una lista llamada 'a' usando el comando de terminal de Linux en Júpiter de la siguiente manera;

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

Para tener los nombres de los archivos sin extensiones, el comando correspondiente funciona en la terminal Linux;

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

Pero, ¿cómo puedo ejecutar este comando en Jupyter asignándolo a un nombre 'a' como el anterior? El siguiente código no funcionó.

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

También intenté cambiar la sangría de las líneas, aparece un error de sintaxis o nada. De mi búsqueda en la línea de comando del bucle for en Júpiter, el '!' Quizás debería estar en una ubicación diferente. ¿Cómo puedo hacerlo funcionar?

Respuesta1

Resolví este problema de otra manera por si alguien tiene un problema similar. Usé la línea de comando a=!find . -type f \! -name '*.*' -print

esto creó una lista de nombres de archivos con extensiones. Quité las extensiones de cada elemento.

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

información relacionada