在bash for循环中将目录作为数字进行回显

在bash for循环中将目录作为数字进行回显,bash,Bash,例如,我循环了当前目录中的目录: for s in ./*/; do echo $s done ./4014/ ./4015/ ./4017/ ./4018/ 我的问题是如何使用每个dir创建循环,因为它是单个数字,例如: 4014 4015 4017 4018 您可以使用删除尾随的/: for folder in */; do echo "${folder%/}" done 或者,如果要在其他目录中循环: for folder in path/*/; do fol

例如,我循环了当前目录中的目录:

for s in ./*/;
do
    echo $s
done
./4014/
./4015/
./4017/
./4018/
我的问题是如何使用每个dir创建循环,因为它是单个数字,例如:

4014
4015
4017
4018
您可以使用删除尾随的
/

for folder in */; do
    echo "${folder%/}"
done
或者,如果要在其他目录中循环:

for folder in path/*/; do
    folder=${folder%/}
    echo "${folder##*/}"
done
您还可以使用
basename

for folder in path/*/; do
    basename "${folder}"
done
报价扩展

您可以使用删除尾随的
/

for folder in */; do
    echo "${folder%/}"
done
或者,如果要在其他目录中循环:

for folder in path/*/; do
    folder=${folder%/}
    echo "${folder##*/}"
done
您还可以使用
basename

for folder in path/*/; do
    basename "${folder}"
done

报价扩展

使用
查找
命令:

find . -maxdepth 1 -type d -printf "%f\n"

使用
查找
命令:

find . -maxdepth 1 -type d -printf "%f\n"

该查找将进行递归搜索,而我相信OP只在当前目录中查找。您可以使用
-maxdepth 1
通过find实现这一点。find将执行递归搜索,而我相信OP只在当前目录中查找。您可以使用
-maxdepth 1
通过find-though来实现这一点。