터미널에 확장자 없이 파일 이름을 나열하시겠습니까?

터미널에 확장자 없이 파일 이름을 나열하시겠습니까?

나는 Mac을 사용하고 있습니다. 목록에 확장자가 포함되지 않은 폴더의 파일 목록을 가져와야 합니다. 왜냐하면 웹사이트 가져오기를 위해서는 제품 목록이 필요하고, 편리하게도 이미지 이름은 제품 이름과 동일하기 때문입니다. 그러나 내 목록에는 확장자가 없어야 합니다.

터미널을 사용하여 파일 이름 목록을 얻었고 이를 텍스트 파일에 복사할 수 있었습니다. 유일한 문제는 파일 이름에 확장명 ".jpg"가 포함되어 있다는 것입니다. 터미널에 있는 목록을 사용하여 이제 텍스트 파일을 살펴보고 각 파일 이름(천 개 이상)에서 확장자를 수동으로 삭제해야 합니다. 시간이 오래 걸릴 거예요. 더 쉬운 방법이 있나요? 터미널에서 확장자 없이 파일 이름 목록을 표시하여 목록에 복사하여 붙여넣을 수 있습니까? 아니면 이 파일에서 확장자를 제거한 다음 터미널에 나열하고 이름을 복사할 수 있습니까? 다른 방법이 있나요? 여기서 혼란스러워요. 저는 프로그래머가 아니며 단지 웹사이트 디자인을 하는 사람입니다.

누군가가 이것을 도울 수 있기를 바랍니다. 모두 감사합니다!

답변1

다음에서 빌림스택 오버플로:

ls -1 | sed -e 's/\..*$//'

중복으로 표시하려고 시도했지만 작동하지 않았습니다.

파일 확장자를 알고 있는 경우 내 솔루션 중 하나입니다.

find -type f -exec basename -s '.jpg' "{}" \;

따라서 디렉토리가 아닌 모든 파일을 찾은 - type f다음 basename각각에 대해 실행하십시오. -s제거할 알려진 접미사를 지정할 수 있습니다 .

또 다른 대체 솔루션:SU에서

답변2

"in.txt" 파일에 파일 목록이 있는 경우 다음 스크립트를 실행하여 "out.txt"에서 확장자가 없는 파일 목록을 가져옵니다.

#!/bin/bash    
while read fullfile; do
    filename=$(basename "$fullfile")
    filename="${filename%.*}"
    echo $filename >> out.txt
done <in.txt

답변3

vi(또는 )을 사용하시나요 vim? 그렇다면 이미 텍스트 파일에 JPEG 파일 이름이 있으므로 가장 쉬운 방법은 vi/를 사용하여 해당 파일을 편집 vim하고 다음을 입력하는 것입니다.

:%s/\.jpg$//

즉, 파일의 모든 줄에서 .jpg줄 끝에서 발생하는 항목을 찾아서 제거하고 아무것도 없는 것으로 바꿉니다. 로 끝나지 않는 줄이 있어도 .jpg괜찮습니다. 무시됩니다(건너뛰기). 다음과 같이 한 줄에 여러 개의 제품 이름(파일 이름)이 있는 경우

        hammer.jpg              screwdriver.jpg         wrench.jpg

그냥 빼고 $추가 g하고 말하세요

:%s/\.jpg//g

제거됩니다모두.jpg줄 끝에 있지 않더라도 이 발생합니다 .

관련 정보