我正在尝试清理一些所有在序列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'
有人能指出我正确的方向吗?
答案 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