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
它也失敗了。
我希望這是有道理的。謝謝
將https://unix.stackexchange.com/a/378304/330217中的答案與您的
ls -t
命令相結合,您可以嘗試IFS= mapfile -t files < <(ls -t -d */) select d in "${files[@]}" do test -n "$d" && break echo ">>> Wrong Folder Selection!!! Try Again" done
請注意,如果您的目錄名稱中包含換行符(或其他特殊字元),則此解決方案不起作用。