2016-03-26 16 views
1
URL_C="any url" 
length_C=$(curl -sI $URL_C | grep Content-Length | cut -d ' ' -f 2) 
answer_C=$(awk -v len=$length_C 'BEGIN{printf "%.0f\n", len/1024}') 

$answer_C değişkeni dosya boyutunu yakalayacak mı?Dosya boyutunun bir URL'den yakalanması ve Kabuk komut dosyasında nasıl kullanılır

Content-Length doğru yoldan mı?

+1

'size = $ (curl -si" $ url "| awk"/Content-Length/{print $ 2} ') 'Content-Length değerini bir değişkene kaydetmeli, ancak" any_url "için çalışmayacaktır. ", bazı sunucular her zaman bu üstbilgiyi çıkarmıyor. – user000001

+0

@Kenavoz: İçerik başlığının mevcut olduğunu varsayalım. İçerik başlığı belirli bir değere sahiptir. Şimdi bu dosyayı sunucuma yüklüyorum ve dosya boyutunu (hem URL hem de sistemden) karşılaştırıyorum. Aynı değil. Bu, indirdikten sonra, diskteki dosyanın boyutunun artması anlamına gelir. Onları eşitleyebilmek istiyorum – Animesh

+1

Dosya boyutu, indirildikten sonra aynı olmalıdır. 'İçerik-Uzunluk 'değerini' wc -c <' ile kendi dosyalarınız ile karşılaştırabilirsiniz '' – SLePort

cevap

3

Ardından @ user000001 olarak Content-Length değer önerilen awk deneyin başlıklarını alabilir ve bulunmazsa eğer, indir dosya karakter saymak:

Not
url="your_url" 
size=$(curl -sI "$url" | awk '/Content-Length/{gsub("\\r", ""); print $2}') 
if [ -z "$size" ]; then 
    size=$(curl -s "$url" | wc -c) 
fi 
printf "%s : %d bytes\n" "$url" "$size" 

: gsub("\\r", "") awk komutunda taşıyıcıyı kaldırma içindir curl çıkışından döndürür.

+0

Teşekkür @ user3439894. Güncellenmiş. – SLePort

+0

Haklısınız. Bitti. – SLePort