Diskuse:Bash

Z GeoWikiCZ

Úklid adresářů

Stará verze úklidu adresářů nepracovala korektně se soubory obsahujícími v názvech souborů bílé znaky a byla nahrazena správným řešením s využitím parametru -print0 příkazu find a programu xargs.

#!/bin/bash
#
# 1) cp uklid /etc/init.d
# 2) update-rc.d  uklid defaults
#   
#    nebo
#
#    update-rc.d  uklid start 93 S .  
#
#    pokud spustim pouze pri startu systemu (tecka je soucasti syntaxe)

case "$1" in
  start)
    echo "Starting script uklid "

      # uklid pracovniho adresare
      # -----------------------------------------------------------

      NULL=/home/cepek/.null

      for WORK in /home/cepek/work /home/cepek/.tmp
      do

        if ! test -d $NULL; then mkdir $NULL; fi
        
        
        touch --date="6 days ago" $NULL/time-stamp
        
        if ! test -d $NULL/`date -I` ; then
             mkdir   $NULL/`date -I`
        fi
        
        
        if ! test -s $WORK/tmp...; then touch $WORK/tmp...; fi   # avoids empty dir
        for i in $WORK/* 
          do
            if test "$i" -ot $NULL/time-stamp; then
                chmod -R u+w "$i" 2>/dev/null
                touch "$i"
                mv -v  "$i" $NULL/`date -I`
          fi 
        done
        rmdir $NULL/`date -I` 2>/dev/null
        if ! test -s $WORK/tmp...; then rm -f $WORK/tmp...; fi
        
        
        touch --date="60 days ago" $NULL/time-stamp
        
        for i in $NULL/*
        do 
          if test "$i" -ot $NULL/time-stamp; then
              rm -rf  "$i" 
          fi
        done
      
      done
    ;;
  stop)
    echo "Stopping script uklid"

    ;;
  *)
    echo "Usage: /etc/init.d/uklid {start|stop}"
    exit 1
    ;;
esac

exit 0