我有一个文件夹顺序编号为 1-1000 的目录,但是我想对该目录中的某些文件夹执行操作。即文件夹 1-50。如何定义循环的起点和终点?
到目前为止,我有一个这样的脚本:
a=1
b=1
for i in ~/PATH/*/ ;do
(cd $i/ && action)
echo "completed"
a=`expr $a + $b`
echo "Next Folder"
done
Run Code Online (Sandbox Code Playgroud)
我可以通过更改 a= 来定义循环的开始,但我不确定如何定义循环的结束?就目前而言,它将继续浏览该目录中的所有文件夹。谢谢 :)
使用该命令seq
生成要迭代的列表:
for nn in $(seq 1 50) ; do
(cd someprefix/$nn && action)
done
Run Code Online (Sandbox Code Playgroud)
或者,如果您的 shell 支持大括号扩展:
for nn in {1..50} ; do
(cd someprefix/$nn && action)
done
Run Code Online (Sandbox Code Playgroud)
Bash 允许循环看起来像标准的 C 循环for
:
for (( i = 1; i <= 50; ++i )); do
( cd $i && action )
done
Run Code Online (Sandbox Code Playgroud)
更改cd $i
为cd "$HOME/PATH/$i"
或任何目录的路径。
#!/bin/bash
a=1
b=1
cd ~/PATH/
for i in $(ls -v) ;do
(cd $i/ && action) && echo "completed" || echo "error"
a=$((a+b)); [ "$a" -gt 50 ] && break
echo "Next Folder"
done
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1309 次 |
最近记录: |