【发布时间】:2011-12-31 22:40:09
【问题描述】:
我只想循环(for file in *) 5 次(所以它不再是一个真正的循环,但是)有没有办法做到这一点?
【问题讨论】:
-
如何将循环限制为 5 次迭代使其“不是真正的循环”?
-
还有
seq命令。
我只想循环(for file in *) 5 次(所以它不再是一个真正的循环,但是)有没有办法做到这一点?
【问题讨论】:
seq 命令。
将文件放入数组中,然后对数组进行切片。
$ files=(*)
$ for file in "${files[@]::5}" ; do echo "$file" ; done
あいうえお
0000000000-11-005978.txt
0000000000-11-020832.txt
1
,123
【讨论】:
这只会查看目录中的前五个项目:
for file in $(ls | head -5)
正如 Ignacio Vazquez-Abrams 指出的那样,这仅适用于您的文件名不包含任何空格的情况。 (他们可能不会,但要记住一些事情。)
【讨论】:
for file in "$(ls -1 | head -5)"; do echo "$file"; done 做了它应该做的事情。
echo "file='$file'" 替换echo 命令,你就会明白我的意思了。
假设进入循环时变量 i 为 undefined 或 0 且未在循环中使用,则添加以下行:
测试 $((++i)) -ge 5 && break在循环体中。循环将在第 5 次迭代期间中断,因此如果将行放在循环体的末尾,您的命令将执行 5 次。如果你的 shell 支持它,你也可以使用不太便携的
((++i >= 5)) && 中断【讨论】:
这是另一种解决方案,它只使用 bash 而没有外部工具:
let COUNT=0
for FILENAME in *
do
echo do something to $FILENAME
let COUNT=COUNT+1
if (( $COUNT == "5" )); then
break
fi
done
【讨论】: