텍스트 목록을 동적 배열로 읽으시겠습니까?

텍스트 목록을 동적 배열로 읽으시겠습니까?

일부 작업을 자동화하려고 하는데 여기에는 많은 폴더 생성이 포함되지만 이를 수행하기 위해 동적 배열을 사용할 생각이었습니다. 어떻게 들리는지 알려주세요.

내 스크립트의 첫 번째 부분은 다음을 사용하여 디렉토리 목록을 내보내는 것입니다.

ls /home/USER/Downloads/ > "/home/USER/Desktop/scripts/FolderList.txt"

예상대로 출력이 제공됩니다.

Folder With Some Long Title
Folder With Another Long Title

이 예에서는 (2)만 제공했지만 1500개 이상의 폴더가 있을 수 있으며 내 서버에 다른 폴더를 만들고 원래 폴더 이름을 기반으로 자동으로 이름을 지정하는 명령을 이미 작성했지만 문제는 다음과 같습니다. 내 스크립트가 모든 폴더를 통해 색인을 생성하고 내 명령을 수행하기를 원합니다(대부분 문자열 조작 등인 약 8개가 있습니다). 그래서 나는 디렉토리에 있는 항목 수를 구한 다음 위에서 언급한 텍스트 파일에 기록한 다음 FOR 루프를 사용하여 8개 정도의 명령이 포함될 횟수를 실행하려고 생각하고 있었습니다. 어떤 생각이나 더 좋은 아이디어가 있나요? 다음을 사용하여 개수를 얻을 수 있습니다.

wc -l FolderList.txt | awk '{ print $1 }'

하지만 동적 배열을 생성 또는 관리하고 이를 for-loop와 함께 사용하여 명령을 통해 색인을 생성하는 방법을 잘 모르겠습니다.

다음은 현재 모듈식 테스트를 위해 주석 처리된 스크립트 중 일부입니다.

#TestString="Customer Info (YEAR) [PMNAME] [OWNERNAME] [EETYPE]"
cd "/home/USER/Downloads/"
ls /home/USER/Downloads/ > "/home/USER/Desktop/scripts/FolderList.txt"
wc -l FolderList.txt | awk '{ print $1 }'

#CUSTINFO=${TestString/(*)*}
#YEAR=$(grep -o '(.*)' <<<"$TestString")
#RESO3=$(grep -o '\[.*\]' <<<"$TestString")
#RESO2=${RESO3//\[PMNAME\]/}
#RESO_FINAL=${RESO2//\[EETYPE\]/}
#FULL_NAME=$TITLE_FINAL$CUSTINFO$YEAR
#mv "/home/USER/Downloads/$DOWNLOAD_NAME" "/home/USER/Downloads/$FULL_NAME"
#for f in */* ;do fp=$(dirname "$f"); ext="${f##*.}" ; mv "$f" "$fp"/"$fp"."$ext" ;done

답변1

명령과 설명을 살펴보면 다음과 같은 작업을 수행하려는 것으로 보입니다.

for TestString in /home/USER/Downloads/*
do 
    #CUSTINFO=${TestString/(*)*}
    #YEAR=$(grep -o '(.*)' <<<"$TestString")
    #RESO3=$(grep -o '\[.*\]' <<<"$TestString")
    #RESO2=${RESO3//\[PMNAME\]/}
    #RESO_FINAL=${RESO2//\[EETYPE\]/}
    #FULL_NAME=$TITLE_FINAL$CUSTINFO$YEAR
    #mv "/home/USER/Downloads/$DOWNLOAD_NAME" "/home/USER/Downloads/$FULL_NAME"
    #for f in */* ;do fp=$(dirname "$f"); ext="${f##*.}" ; mv "$f" "$fp"/"$fp"."$ext" ;done
done

외부 for 루프는 /home/USER/Downloads/와일드카드 확장을 통해 파일을 반복하면서 TestString각 파일 이름을 차례로 설정합니다.

관련 정보