파일 목록 앞에 _Variable_ 폴더 이름 추가

파일 목록 앞에 _Variable_ 폴더 이름 추가

다음을 포함하는 텍스트 파일이 제공됩니다.

AF002 AI003 AA001 AD005 AD006 AI002 …

(레코드 구분 기호로 구분)

다음 내용을 포함하는 텍스트 파일을 생성합니다.

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

(동일한 레코드 구분 기호로 구분)

즉, 파일 이름의 처음 두 글자에서 경로를 유추하고 .jpg를 추가합니다.

또 다른 원하는 기능은 많은 수의 파일을 처리할 것이므로 입력 파일의 처음 세 항목이 [AF][AZ][0-1]인지 테스트하는 것입니다. 세 번째 문자(/)로 인해 테스트가 실패하게 되므로 실수로 출력 파일에 스크립트를 적용하는 일이 방지됩니다.

내 iMac에서 이 작업을 수행하기 위해 AWK 스크립트를 만들려고 노력했지만 가장 간단한 작업도 수행할 수 없는 것 같습니다. 스크립트를 별도의 명령 파일에 넣고 싶습니다. 마감일이 다가오고 있어요.

답변1

이와 같이:

#!/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

 산출

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

답변2

이 시도,

awk '{for (i=1;i<=NF;i++) print substr($i,1,2)"/"$i".jpg" }' file.txt

AF/AF002.jpg
AI/AI003.jpg
AA/AA001.jpg
AD/AD005.jpg
AD/AD006.jpg
AI/AI002.jpg
  • for각 필드를 반복합니다.
  • substring각 필드의 처음 2자를 인쇄합니다.

답변3

perl -pne "s/ /\n/g" p| awk '{print substr($1,1,2)"/"$0".jpg"}' 

산출

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

답변4

이것이 separated by record separators입력 문자열이 실제로 줄 바꿈으로 구분되어 있음을 의미한다고 가정합니다.

$ awk '/^[A-F][A-Z][0-1]/{print substr($0,1,2) "/" $0 ".jpg"}' file
AF/AF002.jpg
AI/AI003.jpg
AA/AA001.jpg
AD/AD005.jpg
AD/AD006.jpg
AI/AI002.jpg

그렇지 않은 경우 다중 문자 RS에 GNU awk를 사용하십시오.

$ awk -v RS='[[:space:]]+' '/^[A-F][A-Z][0-1]/{print substr($0,1,2) "/" $0 ".jpg"}' file
AF/AF002.jpg
AI/AI003.jpg
AA/AA001.jpg
AD/AD005.jpg
AD/AD006.jpg
AI/AI002.jpg

또는 awk 옵션을 사용하십시오.

$ awk -v RS=' ' '/^[A-F][A-Z][0-1]/{sub(/\n/,""); print substr($0,1,2) "/" $0 ".jpg"}' file
AF/AF002.jpg
AI/AI003.jpg
AA/AA001.jpg
AD/AD005.jpg
AD/AD006.jpg
AI/AI002.jpg

$ awk '{for (i=1;i<=NF;i++) if ($i ~ /^[A-F][A-Z][0-1]/) print substr($i,1,2) "/" $i ".jpg"}' file
AF/AF002.jpg
AI/AI003.jpg
AA/AA001.jpg
AD/AD005.jpg
AD/AD006.jpg
AI/AI002.jpg

$ tr ' ' $'\n' < file | awk '/^[A-F][A-Z][0-1]/{print substr($0,1,2) "/" $0 ".jpg"}'
AF/AF002.jpg
AI/AI003.jpg
AA/AA001.jpg
AD/AD005.jpg
AD/AD006.jpg
AI/AI002.jpg

관련 정보