BASH: Finden Sie höchste nummerierte Dateinamen in einem Verzeichnis, in dem Namen beginnen mit Ziffern (ls, sed)

Ich habe ein Verzeichnis mit Dateien, die wie folgt Aussehen:

001_something.php  002_something_else.php
004_xyz.php        005_do_good_to_others.php

Ich letztendlich wollen erstellen Sie eine neue leere PHP Datei, deren name beginnt mit der nächsten Zahl in der Reihe.

LIST=`exec ls $MY_DIR | sed 's/\([0-9]\+\).*/\1/g' | tr '\n' ' '`

Den obigen code gibt mir einen string wie diesen:

LIST='001 002 004 005 '

Ich greifen wollen, 005, erhöht um eins, und dann verwenden Sie diese Zahl zu generieren, die den neuen Dateinamen ein. Wie mache ich das in der BASH?

Ist dies ausgeführt, die als Teil einer web-Anwendung? Wenn der web-server nimmt mehrere gleichzeitige Anfragen (die meisten tun), wie werden Sie sich schützen gegen die race-Bedingung, wenn die Prozesse A und B das check-gleichzeitig, und erstellen Sie dann eine Datei mit der gleichen Nummer?
Nein, das war Teil von einem shell-Skript zu emulieren, die Schienen 'migration' tool für eine php-app, verwendet einen red-headed-Stiefkind der Umsetzung der Datenbank-Migrations-Muster.

InformationsquelleAutor Jake | 2009-10-19

Schreibe einen Kommentar