
다음과 같이 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]