我知道
ls -d */
Run Code Online (Sandbox Code Playgroud)
将当前目录中的所有文件夹列为dir1/ dir2/ dir3/.
bash 脚本中是否有可能将文件夹显示为dir1 dir2 dir3?
使用find(这也将摆脱使用时通常会预先添加的./or ):/path/to/find
find . -maxdepth 1 -type d -printf '%f\n'
Run Code Online (Sandbox Code Playgroud)
上面的命令将包括.dotfiles(通常是隐藏的)。为了避免所有以点开头的目录(至少对于 GNU find):
find . -maxdepth 1 -type d ! -name '.*' -printf '%f\n'
Run Code Online (Sandbox Code Playgroud)
如果您想查看隐藏目录,但又不想.,您可以使用(同样,仅在 GNU find、YMMV 和其他版本的 find 上测试过):
find . -maxdepth 1 -mindepth 1 -type d -printf '%f\n'
Run Code Online (Sandbox Code Playgroud)
纯bash:
for f in */; do echo "${f%/}"; done
Run Code Online (Sandbox Code Playgroud)
以下是一些作弊,因为它实际上用/空格替换了(所以在脚本中不是很有用,但如果你想要的只是更漂亮的输出,你可能会喜欢它):
printf '%s\b \n' */
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用zsh代替bash并利用其全局限定符:
ls -d *(/)
Run Code Online (Sandbox Code Playgroud)
小智 5
只获取目录但省略斜杠:
ls -d */ | sed 's#/##'
Run Code Online (Sandbox Code Playgroud)
或者你必须使用类似的东西find . -type d -maxdepth 1(但这引入了./前缀)
| 归档时间: |
|
| 查看次数: |
8669 次 |
| 最近记录: |