2011-10-20 17 views
2

私が実行するときに発生する並べ替えを制御する方法はありますか? for i *行う;エコー$ i;完了しました。マイディレクトリに いつもアスキーソーティングを使用しているようです。とにかく数値ソートを行うには?bashで "for"ループを使用する

おかげで、 のVivek

答えて

3

あなたは常にソート使用することができます(1)とその数値ソート:

for i in $(ls -1 * | sort -n) ; do echo $i ; done 
+0

-1はここでは冗長です。 – jlliagre

+0

それは '*'です。実際は、冗長ではありません。それはおそらくあなたが望むものではないサブディレクトリの内容をリストします。 –

+0

'-1'は単一列の出力を強制しますが、' ls'の出力がパイプに送られてもそれは起こります。有益なのは、ディレクトリの内容をリストしないでディレクトリをリストする '-d'です。 –

5

はどのようにあなたのファイル名をすることについて、彼らは一種自然に数字として、すなわち先行ゼロで埋め。 1 .. 10 .. 100の代わりに001 ..010 .. 100を使用しますか?

for i in $(ls -d * | sort -n); do echo $i; done; 

サブディレクトリを除外するには:サブディレクトリを含めるように

for i in $(ls | sort -n); do echo $i; done; 

私はこのことができます願っています。

+0

@ samdy1:ありがとうございました。あなたが正しい。私は何を考えていたのですか? ;-) がんばろう。 – shellter

+0

ハハおかげで、あなた:) – samdy1

0

あなたは

 for i in `ls -X` ; do 
      echo $i 
     done 

すなわち とディレクトリを与える[並べ替えオプション]が最初のLSは、特定のソートでlsコマンドからの順序を使用することができ、その後の拡張のためのソート例の場合には、実行されますあなたはforループでリストを出します

0
for i in $(ls | sort -n) ; do echo $i ; done 
関連する問題