2016-04-05 22 views
0

Bu yüzden, bir grup dosyayı belirli bir dizinden ters sırada listelemem gerekiyor. Tek sorun, dizinde çok fazla dosya bulunmasıdır (bir dizindeki video karelerinin tamamını tüm videoyu tersine çevirmek üzere) ve ls'i çalıştırdığımda /bin/ls argument list too long diyor. Bu hatanın nasıl geçeceğini merak ediyordum?Bypass ls argümanı sınırı

İşletim Sistemi: yapmaz Ubuntu 14.04

cevap

1

ls ise find -type f genellikle senin arkadaşın (ve ayrıca sorunlar egzotik dosya önlemek için -print0 gibi şeyler kullanabilirsiniz).

+0

evet 'bulmak ...' 'ile | Daha fazla bilgi için xargs commands_to_execute {} '...' adam xargs'. ... VEYA 'bulmak için' -exec' seçeneği. Hepinize iyi şanslar. – shellter

+0

'xargs'… sadece eğer bir' -exec ... {} \; 'ya da' -exec .. {} \ + 'tabiki :) – Wrikken

+1

BTW ile konuşamıyorsanız 'Sadece tersine çeviren bir dönüştürücü için daha sert görünmek, ama bu noktaya yanında), herhangi bir isim eşleşmeleri alıntı etmeyi unutmayın (böylece, 'find -name * .jpg' size yine de sorun verir,' find -name kullanın '* .jpg' yerine. – Wrikken

1

Sana görüntülerin ters sıralanmış listesini üretmek için

ls -1 -r *.jpg 

gibi bir şey kullandığınız varsayılmaktadır. Bash dosya adı genişletme (aka globs) kendisini sıraladığından, sadece *.jpg genişlemesini tersine çevirerek aynı etkiyi elde edebilirsiniz. Saf Bash hepsini yapabilir,

printf '%s\n' *.jpg | tac 

Eğer tac yok varsa: Bu bunu yapmak için tek yoldur

images=(*.jpg) 
for ((i=${#images[*]}-1 ; i>=0 ; i--)) ; do 
    printf '%s\n' "${images[i]}" 
done