bash - 如何在 for 循环中排除某些目录?
问题描述
我已经创建了这个循环,但我想从作业中排除一些目录。我尝试了不同的方法,但它一直在所有目录上工作。你能帮我么?
for d in */
do
cd $d
echo $d
cartel=$(echo ${d} | sed 's/\///')
echo $cartel
我试过:
shopt -s extglob
for d in this_folder/!(global|plugins|css)/
do
...
done
解决方案
您可以明确测试要跳过的目录:您可以将 $d 与要避免的目录进行比较,并在您不想处理此目录时使用 continue 进入下一个循环:
for d in */ ; do
if [ "$d" == "global/" ] || [ "$d" == "plugins/" ] || [ "$d" == "css/" ] ; then
continue
fi
cd $d
echo $d
cartel=$(echo ${d} | sed 's/\///')
echo $cartel
cd ..
done
推荐阅读
- python - 为什么`conda update qt`更新Spyder最好?
- python - 在 TF1 和 TF2 中为相同的操作获得不同的输出
- python - 仅添加到数据框列中的负天数
- algorithm - 查找算法执行的比较的渐近量
- centos - linphone-sdk 编译错误 - 找不到支持声音驱动程序 API
- elixir - 与 nil 比较返回 true
- firebase - 如何修复 Xcode 12 beta 6 中的 ASAuthorization 错误?
- angular - 使用@input 对角度组件进行单元测试
- javascript - 循环遍历嵌套的 Typescript 对象
- java - 使用 ObjectOutputStream 将 ArrayList 写入文件时如何保留换行符?