"_Variable_ 폴더 이름을 파일 목록에 추가하기 전"에 대한 후속 조치

"_Variable_ 폴더 이름을 파일 목록에 추가하기 전"에 대한 후속 조치

나는 원래 질문에 대해 몇 가지 좋은 답변을 받았으며 @Giles Quenot에서 제공하는 bash 솔루션을 사용하기로 결정했습니다.

#!/bin/bash

str=$(<file)

for i in $str; do
    if [[ $i =~ ^[A-F][A-Z][0-1] ]]; then
        echo "${i:0:2}/$i.jpg"
    fi
done

다음을 포함하는 텍스트 파일을 변환합니다.

AF002
AI003
AA001
AD005
AD006
AI002

입력하다

AF/AF002.jpg
AI/AI003.jpg
AA/AA001.jpg
AD/AD005.jpg
AD/AD006.jpg
AI/AI002.jpg

그러나 나는 bash 스크립트를 만들었고 AddPath.sh완전히 초보자와 관련된 두 가지 질문이 있습니다.

  1. 스크립트 이름 뒤의 "1" 위치에 있는 파일에 대해 작동하도록 위의 명령을 조정할 수 없습니다. 왜냐하면 AddPath.sh TrialList.txt > TargetFile.txt이 스크립트를 수십 번 사용해야 할 수도 있기 때문입니다. 파일. 저의 무지를 극복할 수 있도록 도와주세요.

  2. 제가 파일 경로를 만들어야 했던 대부분의 파일은 일반적으로 NO NAME...라고 알려진 SanDisk 썸 드라이브에 있는 것으로 나타났습니다. 방금 권장 스크립트의 에코 라인 추가를 echo "NO NAME/${i:0:2}/$i.jpg".

    NO NAME/AF/AF002
    .jpg
    NO NAME/AI/AI003
    .jpg
    NO NAME/AA/AA001
    .jpg
    NO NAME/AD/AD005
    .jpg
    NO NAME/AD/AD006
    .jpg
    NO NAME/AI/AI002
    .jpg
    

그렇다면 다시 말하지만, 아마도 순수한 초보자의 어리 석음 일 것입니다. 도와주세요.

답변1

아아! 실제로 문제를 직접 해결했습니다!

문제 (2)는 어떤 이유로 $i 변수에 원래 목록의 줄 끝에 캐리지 리턴이 포함되어 있다는 것입니다. 이전에는 아니고 지금 스크립트가 왜 이렇게 하는지는 확실하지 않지만, 여기까지입니다. echo "NO NAME/${i:0:2}/$i.jpg"를 교체하여 이 문제를 해결 했습니다 echo "NO NAME/${i:0:2}/${i:0:5}.jpg". 이렇게 하면 캐리지 리턴이 줄 끝에 복사되는 것을 방지할 수 있습니다.

관련 정보