아래와 같이 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]