File: print-disc-blocks.sh

package info (click to toggle)
wit 3.01a-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye, buster
  • size: 9,440 kB
  • sloc: ansic: 109,416; pascal: 2,205; sh: 1,972; makefile: 749
file content (30 lines) | stat: -rwxr-xr-x 752 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/usr/bin/env bash

CYGWIN=0
[[ $TERM = cygwin ]] && CYGWIN=1

for src in "$@"
do
    file="$(readlink -m "$src")"
    dir="${file%/*}"
    if ((CYGWIN))
    then
	dev="$( df "$dir" | awk '$1 ~ "^[A-Z]:" { print $1; exit }' )"
    else
	dev="$( df "$dir" | awk '$1 ~ "^/dev/" { print $1; exit }' )"
    fi
    inode="<$(stat -c%i "$file")>"
    usage=$(($(stat -c'%B/512*%b' "$file")/2048))
    size=$(($(stat -c%s "$file")/1024/1024))

    if ((1))
    then
	echo -n "$src -> $dev $inode, $usage/$size MiB, frag="
	DEBUGFS_PAGER=cat /sbin/debugfs "$dev" -R "stat $inode" 2>&1 \
	    | sed -r '0,/^(EXTENTS|BLOCKS):/ d; s/, */\n/g' \
	    | grep -vF '(IND)' \
	    | wc -l
    else
	DEBUGFS_PAGER=cat /sbin/debugfs "$dev" -R "stat $inode"
    fi
done