폴더를 선택하는 Bash 스크립트

폴더를 선택하는 Bash 스크립트

최근에 수정된 모든 폴더를 나열하는 디렉토리를 먼저 사용하려고 하는데 select작동이 멈췄습니다.

내가 가지고 있다고 가정 해 봅시다 :

Folder1
ThisIsAnotherDir
Directory
New Directory
This IS not_Same Directory

다음 명령을 실행할 때:

ls -t -d */ 

원하는 출력을 얻습니다.

하지만 내가 사용할 때 select:

options=$(ls -t -d */)
select d in $options; do test -n "$d" && break; echo ">>> Wrong Folder Selection!!! Try Again"; done

먼저 수정된 폴더가 나열되지만, New Directory마지막으로 수정하고 실행하면 다음과 같이 출력됩니다.

1)New 
2)Directory
3)Folder1
4)ThisIsAnotherDir
5)Directory
6)This 
7)IS 
8)not_Same 
9)Directory

나는 또한 다음을 시도했습니다.

select d in "$options[0]"; do test -n "$d" && break; echo ">>> Wrong Folder Selection!!! Try Again"; done

또한 실패했습니다.

이것이 의미가 있기를 바랍니다. 감사해요

답변1

답변 결합https://unix.stackexchange.com/a/378304/330217ls -t당신의 명령 으로 시도해 볼 수 있습니다

IFS= mapfile -t files < <(ls -t -d */)

select d in "${files[@]}"
do
    test -n "$d" && break
    echo ">>> Wrong Folder Selection!!! Try Again"
done

디렉터리 이름에 개행 문자(또는 기타 특수 문자)가 포함되어 있으면 이 해결 방법이 작동하지 않습니다.

관련 정보