bash命令 - 在带有if语句的`ls`中使用for i

时间:2013-01-08 21:17:35

标签: linux bash

我正在尝试清理一些所有在序列1001,1002,1003中命名的目录,而我似乎无法使用此脚本来删除值小于数字的目录

DIR的内容

1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014

我的命令

for i in `ls`; do if (( $i < 1011 )) then echo rm $i -rf; done

但我收到了错误

-su: syntax error near unexpected token `then'

有人能指出我正确的方向吗?

4 个答案:

答案 0 :(得分:3)

for i in *; do [ $i -lt 1011 ] && rm -fr $i; done

完成这项工作。

注意:这确实会删除文件,而不只是打印删除命令。

答案 1 :(得分:2)

here所解释的那样,对ls进行循环是不好的。相反,使用find,如下所示:

find . -regex '\./10[01][0-9]' -exec echo rm '{}' -rf \;

答案 2 :(得分:1)

for i in `ls`; do if [ $i -lt 1011 ]; then echo rm $i -rf; fi; done

编辑

答案 3 :(得分:0)

do

这就是原因。

for i in `ls` ; do whatever ; done