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}-*; done
ardı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.rmdir
Dizin boş değilse düz başarısız olur, yani güvenlidir. Varmv
olmayan dosyalardan gelen önemli olmayan hata çıktısını alın .