Как написать команду find для Linux с циклом for на Jupyter

Как написать команду find для Linux с циклом for на Jupyter

Я могу получить список имен файлов в списке с именем «a», используя команду терминала Linux на Jupiter следующим образом:

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 {} +

Я также пробовал менять отступы строк, но получаю синтаксическую ошибку или ничего. Из моего поиска в командной строке цикла for на Jupiter '!', возможно, должен быть в другом месте. Как мне заставить это работать?

решение1

Я решил эту проблему другим способом, если у кого-то была похожая проблема. Я использовал командную строку a=!find . -type f \! -name '*.*' -print

это создало список имен файлов с расширениями. Я удалил расширения из каждого элемента.

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

Связанный контент