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

하지만 위와 같이 이름 'a'에 할당하여 Jupyter에서 이 명령을 어떻게 실행할 수 있습니까? 아래 코드는 작동하지 않았습니다.

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]

관련 정보