Dosyaları bu şekilde taşımaya çalışıyorum:
...
DLG023-00-01-sprite.TextGrid.json
DLG023-00-01.prosody.json
DLG023-01-01-sprite.ogg
DLG023-00-02-sprite.TextGrid.json
DLG023-00-02.prosody.json
DLG023-01-02-sprite.ogg
...
DLG028-00-01-sprite.TextGrid.json
DLG028-00-01.prosody.json
DLG028-01-01-sprite.ogg
...
örneğin ilgili klasörlerine, örneğin: dosyayı dialogue023/başladığında DLG023; ile dialogue024/başladığında DLG024; ve bunun gibi.
Tüm dosyalar ve dizinler aynı seviyededir.
Başka bir deyişle, bunun gibi komutlar üretmeye çalışıyorum:
mv DLG023-00-01-sprite.ogg dialogue023/
İlk numarayı dosya adından nasıl çıkarabilirim?
Şimdiye kadar bu var:
for i in DLG*-*-*-sprite.ogg; do echo "${i//[^0-9]}";done
Ancak bu yalnızca birincisini istediğimde (örneğin: 23) tüm rakamları (örneğin: 230001) çıkarır.
for num in $(seq -f '%03g' 1 999); do test -d dialogue${num}||mkdir dialogue${num}; mv -t dialogue${num} DLG${num}-*; doneardındanrmdir dialogue*--f '%03g'999 uyan beri tüm sayılar en az üç basamak sıfır getirilmiş olan araçlar ve üç hane, tüm sayılar dizin isimlerinde üç hane olacak.rmdirDizin boş değilse düz başarısız olur, yani güvenlidir. Varmvolmayan dosyalardan gelen önemli olmayan hata çıktısını alın .