Differences between current version and predecessor to the previous major change of KnowledgeBase/Scripts/pigs.sh.

Other diffs: Previous Revision, Previous Author

Newer page: version 3 Last edited on Tuesday, 13 April 2010 4:59:17 by CyberLeo
Older page: version 2 Last edited on Tuesday, 20 October 2009 8:52:02 by CyberLeo Revert
@@ -1,6 +1,29 @@
-prettymag .awk :  
-<code brush="awk "> 
+pigs .sh :  
+<code brush="bash ">  
+#!/bin/sh  
+  
+du_flags="-sxb"  
+sort_flags="-bn"  
+  
+while [ "${1}" ]  
+do  
+ case "${1}" in  
+ -k) du_flags="${du_flags} -k" ;;  
+ -d) sort_flags="${sort_flags} -r" ;;  
+ -n) pipe_to="neditc" ;;  
+ esac  
+ shift  
+done  
+  
+#find . -maxdepth 1 -print0 | sed -e 's/\x00\.\//\x00/g' -e 's/^\.\x00//g' | \  
+# xargs -0 du ${du_flags} | sort ${sort_flags} | \  
+# awk '{ c = c + $1; print }END{ print "----\n" c "\tTotal" }' | \  
+# sed -e :a -e 's/\(.*[0-9]\)\([0-9]\{3\}\)/\1,\2/;ta'  
+  
+find . -maxdepth 1 -print0 | sed -e 's/\x00\.\//\x00/g' -e 's/^\.\x00//g' | \  
+ xargs -0 du ${du_flags} | sort ${sort_flags} | \  
+ awk -f /dev/fd/4 4<<"EOF"  
 #!/usr/bin/awk -f 
 BEGIN { 
  total = 0; 
  "stat -fc '%s' ." | getline blksz; 
@@ -46,32 +69,6 @@
 END { 
  print "----" 
  print prettymag(total) "\t" "Total"; 
 
-</code>  
-  
-pigs.sh:  
-<code brush="bash">  
-#!/bin/sh  
-  
-du_flags="-sxb"  
-sort_flags="-bn"  
-  
-while [ "${1}" ]  
-do  
- case "${1}" in  
- -k) du_flags="${du_flags} -k" ;;  
- -d) sort_flags="${sort_flags} -r" ;;  
- esac  
- shift  
-done  
-  
-# Old format code commaizes century numbers, but does so even in filenames  
-#find . -maxdepth 1 -print0 | sed -e 's/\x00\.\//\x00/g' -e 's/^\.\x00//g' | \  
-# xargs -0 du ${du_flags} | sort ${sort_flags} | \  
-# awk '{ c = c + $1; print }END{ print "----\n" c "\tTotal" }' | \  
-# sed -e :a -e 's/\(.*[0-9]\)\([0-9]\{3\}\)/\1,\2/;ta'  
-  
-find . -maxdepth 1 -print0 | sed -e 's/\x00\.\//\x00/g' -e 's/^\.\x00//g' | \  
- xargs -0 du ${du_flags} | sort ${sort_flags} | \  
- prettymag.awk  
+EOF  
 </code> 

current version

pigs.sh:

#!/bin/sh

du_flags="-sxb"
sort_flags="-bn"

while [ "${1}" ]
do
  case "${1}" in
  -k)   du_flags="${du_flags} -k"  ;;
  -d)   sort_flags="${sort_flags} -r"  ;;
  -n)   pipe_to="neditc"  ;;
  esac
  shift
done

#find . -maxdepth 1 -print0 | sed -e 's/\x00\.\//\x00/g' -e 's/^\.\x00//g' | \
#  xargs -0 du ${du_flags} | sort ${sort_flags} | \
#  awk '{ c = c + $1; print }END{ print "----\n" c "\tTotal" }' | \
#  sed -e :a -e 's/\(.*[0-9]\)\([0-9]\{3\}\)/\1,\2/;ta'

find . -maxdepth 1 -print0 | sed -e 's/\x00\.\//\x00/g' -e 's/^\.\x00//g' | \
  xargs -0 du ${du_flags} | sort ${sort_flags} | \
  awk -f /dev/fd/4 4<<"EOF"
#!/usr/bin/awk -f
BEGIN {
  total = 0;
  "stat -fc '%s' ." | getline blksz;
  close("stat -fc '%s' .")
  syms[0] = "B";
  syms[1] = "K";
  syms[2] = "M";
  syms[3] = "G";
  syms[4] = "T";
  syms[5] = "P";
}
function prettymag(count) {
  count = count;
  mag = 0;
  while (count > 1024) {
    mag += 1;
    count /= 1024;
  }
  sym = syms[mag];
  if (mag == 0) {
    return sprintf("%0.0f%s", count, sym);
  } else {
    if (count < 10) {
      return sprintf("%0.2f%s", count, sym);
    } else if (count < 100) {
      return sprintf("%0.1f%s", count, sym);
    } else {
      return sprintf("%0.0f%s", count, sym);
    }
  }
}
/^([0-9]+)\t(.*)$/ {
  name = $0
  sub(/^[0-9]+\t/, "", name)

  total += $1
  if (($1 % blksz) > 0) {
    total += (blksz - ($1 % blksz))
  }

  print prettymag($1) "\t" name;
}
END {
  print "----"
  print prettymag(total) "\t" "Total";
}
EOF