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

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

일부 작업을 자동화하려고 하면 많은 폴더 생성이 필요하지만 이를 위해 동적 배열을 사용할 생각입니다. 어떻게 들리는지 알려주세요.

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

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 루프와 함께 사용하여 명령을 통해 인덱싱하는 방법을 잘 모르겠습니다.

다음은 함께 제공되는 스크립트 중 일부이며, 일부는 현재 모듈식 테스트를 위해 주석 처리되어 있습니다.

#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각 파일 이름을 차례로 설정합니다.

관련 정보