adlarına göre ilk 10 en son dosyayı yeniden adlandır


0

Tanımlanmış bir dizinde bazı .xls dosyalarım var (/ A / B de). En son 10 dosyayı yeniden adlandırmak ve isimlerine "-bkp" eklemek istiyorum.

Denedim, çalışmıyor

ls -lt *.xls | head -1 | awk '{print "mv " $9 " "$9-bkp}' | sh

Bul ve -exec'i denedim ama en son değiştirilen dosyaları nasıl bulacağız?

Yanıtlar:


0

Komut dosyanızın başarısız olmasının nedeni, şu $9-bkpifadenin bir ifadesidir: -bkpalıntı da yapılmalı, bu nedenle satır şöyle olmalıdır:

ls -lt *.xls | head -10 | awk '{print "mv " $9 " "$9"-bkp"}' | sh

Bununla birlikte, bu gereksiz yere karmaşıktır: birçok dosya özniteliği listesi vardır, sonra awkadı ayıklamak için kullanın . Ayrıca, oluşturulan komutları çalıştırmak için bir alt kabuk başlatmanız gerekmez. Ayrıca, bir dosya adında boşluklar varsa yukarıdaki komut çalışmaz.

Aşağıdakiler tüm bu noktaları ele almaktadır:

ls -t *.xls | head -10 | while read; do mv "$REPLY" "$REPLY-bkp"; done

Bu durumda, ls -ther satırda bir tane olmak üzere yalnızca dosya adlarını listeler; gömülü, öncülük veya izlemenin tümü dahil olmak üzere tüm boşlukları içeren readher bir tam satırı kopyalar REPLY; ve mvkomut her satır için çalıştırılır.

Daha yaygın read nameolanın bir çizgiyi kopyalayacağını name, ancak baştaki ve sondaki boşlukların bulunmadığını unutmayın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.