ディレクトリを選択し、エコーのみを使用して特定の方法でソートします。

ディレクトリを選択し、エコーのみを使用して特定の方法でソートします。

私はUnix環境の経験がないので、スクリプトを調整する必要があります。これは基本的な知識のようですが、グーグルでは簡単な解決策を見つけることができません。

このスクリプトは、ディレクトリ内のすべてのwebappsrvを取得して再起動します。

TMPLIST=`cd $MYWEBAPPSRV_DIR; /bin/echo *`

これにより、次のリストが返されます。

myAppSrv_1
myAppSrv_11
myAppSrv_12
myAppSrv_2
myAppSrv_3
...
myApSrv_9
somescript
somemorescriptfiles

スクリプトファイルを除いて必要なディレクトリのみを選択する方法は?数字の順序(1、2、3、...、11、12)でサーバーを再起動する必要がありますが、どうすれば順序を簡単に変更できますか?ディレクトリ名を変更できません。ディレクトリをテキストと数字の部分に分割し、数字の部分に並べ替えることは可能ですが、特別な並べ替えパラメータなどの簡単なオプションはありますか?

ベストアンサー1

ジッシュほとんどのディストリビューションで使用できますが、通常はデフォルトのインストールには含まれません。インストールに問題がない場合は、そのまま使用してください。グローバル予選機能で問題を簡単に解決できます。

#!/bin/zsh
cd $MYWEBAPPSRV_DIR
TMPLIST=(*(/n))
for app in $TMPLIST; do … done

globは*すべてのファイル(ドットファイルを除く)をリストし、glob修飾子は/ディレクトリファイルのみを選択し、一連nの数字がデフォルトの事前編成順序ではなく数字でソートされるようにします。ディレクトリを変更せずにディレクトリの一部を一致から除外するには、次のようにします。歴史拡張修飾子デフォルト名部分のみを保持します。

#!/bin/zsh
TMPLIST=($MYWEBAPPSRV_DIR/*(/n:t))
for app in $TMPLIST; do … done

zsh インストールが実用的ではなく、GNU coreutils (例: Linux 以外の Cygwin など) を使用するシステムを実行していて、ファイル名に特殊文字 (スペースまたはワイルドカード) が含まれていない場合は、次のコマンドを使用してls -vファイル名を並べ替えるできます。一連の数値と-Fテキストフィルタを含むファイルの種類を表示し、ディレクトリのみを選択します。

TMPLIST=$(ls -Fv $MYWEBAPPSRV_DIR | sed -n 's!/$!!p')
for app in $TMPLIST; do … done

おすすめ記事