나는 원래 질문에 대해 몇 가지 좋은 답변을 받았으며 @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" 위치에 있는 파일에 대해 작동하도록 위의 명령을 조정할 수 없습니다. 왜냐하면
AddPath.sh TrialList.txt > TargetFile.txt
이 스크립트를 수십 번 사용해야 할 수도 있기 때문입니다. 파일. 저의 무지를 극복할 수 있도록 도와주세요.제가 파일 경로를 만들어야 했던 대부분의 파일은 일반적으로
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"
. 이렇게 하면 캐리지 리턴이 줄 끝에 복사되는 것을 방지할 수 있습니다.