1

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

4 に答える 4

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

仕事をします。

注:これは実際にファイルを削除し、削除コマンドを出力するだけではありません。

于 2013-01-08T21:26:12.403 に答える
2

ここで説明されているように、lsをループするのは悪いことです。代わりに、次のようにfindを使用します。

find . -regex '\./10[01][0-9]' -exec echo rm '{}' -rf \;
于 2013-01-08T21:38:01.683 に答える
1

試す

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

編集

于 2013-01-08T21:19:39.380 に答える
0
do

それが理由。

for i in `ls` ; do whatever ; done
于 2013-01-08T21:19:53.980 に答える