![Bash 脚本选择文件夹](https://linux22.com/image/179491/Bash%20%E8%84%9A%E6%9C%AC%E9%80%89%E6%8B%A9%E6%96%87%E4%BB%B6%E5%A4%B9.png)
我试图首先使用 列出所有最新修改的文件夹的目录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/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
请注意,如果您的目录名称中包含换行符(或可能包含其他特殊字符),则此解决方案不起作用。