#!/bin/sh # Move files from current directory to temp directories # all smaller than a given size # # Autor Thorsten Gunkel # # --- 24.04.2002 Thorsten Gunkel --- # * Completly rewritten # * No more endless loops # * Can deal with spaces in filenames # --- 24.04.2002 Thorsten Gunkel --- # * Initial release # Note: Get all sizes with --block-size=1 # Iomega 100MB zip MAX_SIZE=100431872 # media number counter=0 fertig=0 while [ $fertig -eq 0 ] do # Fill next media counter=`expr 1 + $counter` # Space left on media r_size=$MAX_SIZE # Check for directories if [ -d $counter ]; then echo "Directory $counter exists, try to remove ..." rmdir $counter if [ -d $counter ]; then echo "*** Directory $1 exists and can't be removed ***" exit 1 fi fi # Create directory mkdir $counter # find files, largest first find . -type f -maxdepth 1 -printf %s\ %f\\n | sort -rn | while read line do # size of actual file f_size=`echo $line | awk '{ print $1 }'` # name of actual file f_name="`echo $line | sed s/'^[0-9]* '//`" # all files must be <= media size if [ $f_size -gt $MAX_SIZE ]; then echo "*** \"$f_name\" is larger then $MAX_SIZE ***" exit 1 fi # enough space left? if [ $f_size -le $r_size ]; then r_size=`expr $r_size - $f_size` echo "($r_size) mv $f_name -> $counter/" mv "$f_name" $counter/ fi done # check if we are ready if [ `find $counter -type f -maxdepth 1 | wc -l` -eq 0 ]; then fertig=1 rmdir $counter fi done