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]

관련 정보