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/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

请注意,如果您的目录名称中包含换行符(或可能包含其他特殊字符),则此解决方案不起作用。

相关内容