19

nlbで始まるフォルダ内の最新のディレクトリ名を取得する必要があります。

#!/bin/sh

cd /home/ashot/checkout
dirname=`ls -t nlb* | head -1`
echo $dirname

フォルダにnlbで始まる名前のフォルダが多数含まれている場合、このスクリプトは正常に機能しますが、nlbで始まる名前のフォルダが1つしかない場合、このスクリプトはそのフォルダ内の最新のファイル名を出力します。最新のディレクトリ名を取得するように変更するにはどうすればよいですか?

4

2 に答える 2

13

-dlsに引数を追加します。そうすれば、ディレクトリ内を見るのではなく、常に伝えられたとおりに印刷されます。

于 2013-02-23T14:17:40.900 に答える
8
#!/bin/sh

cd /home/ashot/checkout
dirname=$(ls -dt nlb*/ | head -1)
echo $dirname

他の答えが指摘しているように、-dディレクトリの内部を見ないようにする必要があります。

ここでの追加のヒントは/、パターンにを追加することです。最新のディレクトリを取得するために指定した質問で。この末尾/では、ディレクトリのみが一致します。それ以外の場合は、最新でnlb*スクリプトを壊すパターンに一致するファイルが存在する場合。

また、現代のおすすめの書き方を変更し`...`ました。$(...)

于 2013-02-23T14:29:08.170 に答える