需要编写一个脚本,选择目录中的一个子目录来使用它。
我是这样认为的。
这是 /SampleDir/,它有 /SubDir1/、/SubDir2/ 和 /SubDir3/
用户输入目录位置,程序搜索它并向用户提供此目录中的子目录列表,用户只需单击列表号即可选择他想要工作的子目录:
代码
echo "Сhoose Directory:\n"
read SOMEDIR
// #check nubmber of subdirs
echo "In directory you have multiple subdir's, which one do you want to use"
// #choose subdir
// #Any operation, like Remove SubDir
- 在终端也一样
选择目录:
输入:/根/文档/示例目录/
在目录中,您有多个子目录,您想使用哪一个:
1)SubDir1
2)SubDir2
3)SubDir3
输入:1
多谢
答案1
我写了这个脚本选择输入起来很费时间的长子目录名称。
用法
当您拨打电话cdd
并且有多个子目录时,您需要选择一个:
在此屏幕中,如果您点击好的按钮它相当于:
cd Seven\ Mary\ Three
或者:
cd "Seven Mary Three"
当您调用cdd
并且只有一个子目录时,它会自动更改为该子目录:
rick@alien:~/Music/Seven Mary Three$ cdd
rick@alien:~/Music/Seven Mary Three/American Standard$
当您调用cdd
并且没有子目录时,会显示错误:
rick@alien:~/Music/Seven Mary Three/American Standard$ cdd
No subdirectories
rick@alien:~/Music/Seven Mary Three/American Standard$
答案2
您可以将目录列表放在数组中
mapfile -d '' -t dirs < <(printf '%s\0' */)
然后使用 bashselect
构造:
select d in "${dirs[@]}"; do echo "You chose: $d"; break; done
1) Desktop/ 3) dir/ 5) opt/ 7) somedir/ 9) subdir/
2) Documents/ 4) openssh-8.2p1/ 6) qgis_sample_data/ 8) src/
#? 5
You chose: opt/
将 替换echo
为您实际想要对选定目录执行的操作。