我想做一个循环(for file in *)
只有5次(所以它不再是一个真正的循环,但是)无论如何都要这样做吗?
答案 0 :(得分:5)
将文件放入数组中,然后对数组进行切片。
$ files=(*)
$ for file in "${files[@]::5}" ; do echo "$file" ; done
あいうえお
0000000000-11-005978.txt
0000000000-11-020832.txt
1
,123
答案 1 :(得分:1)
这只会查看目录中的前五项:
for file in $(ls | head -5)
正如Ignacio Vazquez-Abrams指出的那样,只有当你的文件名不包含任何空格时,这才有效。 (他们可能不会,但要记住一些事情。)
答案 2 :(得分:1)
假设变量i未定义或输入循环时为0且未在循环中使用,只需添加以下行:
test $((++i)) -ge 5 && break
在循环体中。循环将在第5次迭代期间中断,因此如果将行放在循环体的末尾,则命令将执行5次。如果你的shell支持它,你也可以使用不太便携的
((++i >= 5)) && break
答案 3 :(得分:0)
这是另一种解决方案,它只使用bash而不使用外部工具:
let COUNT=0
for FILENAME in *
do
echo do something to $FILENAME
let COUNT=COUNT+1
if (( $COUNT == "5" )); then
break
fi
done