2010-02-10 41 views
7

Tôi muốn nhận kích thước tệp thành biến? Làm thế nào để làm điều đó?Kích thước tệp vỏ linux

ls -l | grep testing.txt | cut -f6 -d' ' 

cho kích thước nhưng cách lưu trữ trong biến trình bao?

+0

Bash tôi đoán? – ziya

+0

có vỏ bash và cảm ơn tất cả. –

+1

Bản sao có thể có của [Cách kiểm tra kích thước của một tệp?] (Http://stackoverflow.com/questions/5920333/how-to-check-size-of-a-file) –

Trả lời

18
filesize=$(stat -c '%s' testing.txt) 
+2

'stat -f '% z'' trên MacOS X. – Matt3o12

1
size=`ls -l | grep testing.txt | cut -f6 -d' '` 
+0

Không đảm bảo rằng kích thước sẽ nằm trong trường 6 khi phân cách bằng dấu cách. –

+0

Điều này cũng không hiệu quả vì đường ống 'ls' vào danh sách' grep' * tất cả * tệp trong thư mục và sắp xếp tên của chúng (có thể mất một lượng thời gian đáng kể trong một thư mục với hàng nghìn tệp). 'grep testing.txt' cũng trả về các tệp có các tên như' not_testingatxt_file' (như '.' trong một regex có nghĩa là match-any-character). –

4

bạn có thể làm theo cách này với ls (đánh dấu trang người đàn ông cho ý nghĩa của -s)

$ var=$(ls -s1 testing.txt|awk '{print $1}') 

Hoặc bạn có thể sử dụng stat với -c '%s'

Hoặc bạn có thể sử dụng tìm (GNU)

$ var=$(find testing.txt -printf "%s") 
+0

giải pháp tìm kiếm hoạt động trên MINGW và git bash trên Windows. Không có câu trả lời nào khác hoạt động trên MINGW. – JDiMatteo

+0

Nếu bạn muốn một phiên bản hoạt động trên * mọi hệ thống POSIX, 'wc -c' sẽ tốt hơn hoặc dựa vào hành vi' ls' * hoặc * khi có 'tìm' hoặc 'stat' của GNU. –

+0

Lưu ý rằng wc -c là chính xác hơn cho các tệp giả như/proc/cpuinfo – pixelbeat

3
size() { 
    file="$1" 
    if [ -b "$file" ]; then 
    /sbin/blockdev --getsize64 "$file" 
    else 
    wc -c < "$file" # Handles pseudo files like /proc/cpuinfo 
    # stat --format %s "$file" 
    # find "$file" -printf '%s\n' 
    # du -b "$file" | cut -f1 
    fi 
} 

fs=$(size testing.txt) 
-1
a=\`stat -c '%s' testing.txt\`; 
    echo $a 
Các vấn đề liên quan