在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来实现这一点。