私のスクリプトは次のとおりです
strenggen ( ) { something; }
strengen 1
strengen 2
strengen 3
strengen 4
strengen 5
etc..
strengen?string=1
etc.というディレクトリにいくつかのファイルを追加します。strengen?string=2
私がやりたいことは、スクリプトを終了して再度実行すると、13、14、60000、または140000のうち最後に実行された数字を見つけるようにすることです。私はファイル名に最後の番号が含まれているので、最後に変更されたファイルを見つけてその番号(たとえば、類似のfind . -type f -print0 | xargs -0 stat -f "%m %N" | sort -rn | head -1 | cut -f2- -d" "
もの)をコピーできると思いました。文字列をsedすると開始番号を取得できますが、他の行を無視する方法がわかりません。
答え1
次のコマンドは、最新の「strengen」ファイルの番号を変数に入れます$LATEST
。
LATEST=$(/bin/ls -1t | grep `^strengen` | head -1 | sed -e 's/strengen.*=//')
ここでは、出力に影響を与える可能性のあるエイリアスを削除するために、エイリアスだけでなく/bin/ls
非常に一般的なエイリアスも使用しています。ls
ls -1
ls
また、ls
私が使用したオプションは(文字)の-1
代わりに(数字1)です。これは、1行に1つのファイルをリストすることを意味します。このオプションは、最新の項目から時系列に並べ替えることを示します。-l
l
ls
-t
ls
別のオプションは、関数の上部に次のようなものを置くことですstrenggen()
。
[ -e "strengen?string=$1" ] && return
ファイルがすでに存在する場合は、何も実行せず、関数はすぐに返されます。