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.