Visa obesvarade inlägg | Visa aktiva trådar Aktuellt datum och tid: 05 dec 2021, 02:48



Svara på tråd  [ 4 inlägg ] 
 Since - användbart script... 
Författare Meddelande
Användarvisningsbild

Blev medlem: 05 apr 2008, 23:09
Inlägg: 5951
Ort: Göteborg/Mölndal/Falkenberg
OS: Ubuntu
Svara med citat
Inlägg Since - användbart script...
Eftersom användningen av "find" ibland är lite bökig, så gjorde jag ett script för några år sedan som heter "since". Med det kan man köra typ "since 2 days" och se allt som är förändrat under de två senaste dagarna.

Som argument kan man ha "m", "min", "minute" eller "minutes", "h", "hour" eller "hours", "d", "day" eller "days", "w", "week" eller "weeks". Så man uttrycker rätt enkelt vad man vill veta....

Jag använder scriptet rätt ofta själv och det är till stor hjälp - typ när man vill veta vad det är man har förändrat under de sista två veckorna....

So, here it is:
Kod:
#! /bin/bash
#
# -Find files modified last day
#
MAXDEPTH=1
##################################################################################################################################################
function enterExit {
   if [[ $WAIT == true ]]; then
      echo -n "[Press ENTER to continue]"
      read IN
   fi
   exit
}
#
function usage {
   cat << EOD

Usage:  since [-m d|--max=d|--maxdepth=d] [-r|-R|--recurs|--recursive] [N] [units] [filename]

   -m d|--max=d|--maxdepth=d
              The maximum depth to be searched. If d is specified as 1 only the current directory is searched,
         which is the default.

   -r|-R|--recurs|--recursive
              Specifies that the search will be done recursively up to 99 levels. If both -r and -m are used,
         -r must be first, as -m implicitly includes -r up to the specified level, but if -r is specified
         after, then 99 overrides the number of levels specified by -m.

         Of course -m 99, --max=99 and --maxdepth=99 can also be specified which is exactly the same as -r,
         but in bash it is not possible to have an option which optionally can have a parameter. So therefore
         -r is just a shortcut for "-m 99" or "--maxdepth=99".

   N          The number of minutes, hours, days or weeks

   units      The unit to use, may be:
              m  min   minute  minutes
              h  hour  hours
              d  day   days
              w  week  weeks

   filename   If wildcard is used, it must be escaped like '*.c' or \*.c

   Deafult is:  "since 1 day" and if just a number is specified but no unit, days are assumed.

EOD
exit
}
#
function isnum {
   if [[ $1 =~ ^[0-9]+$ ]]; then
      return 0
   fi
   return 1
}
#
#####################################################################
#
#
TEMP=`getopt -ohm:rR --long help,max:,maxdepth:,recurs,recursive -n $(basename $0) -- "$@"`
if [[ $? -ne 0 ]]; then
   usage
fi
eval set -- "$TEMP"
CMDNAME=$(basename $0)
while true; do
   case $1 in
      -h|--help)
         usage
         exit
         ;;
      -r|-R|--recurs|--recursive)
         MAXDEPTH=99
         shift
         ;;
      -m|--max|--maxdepth)
         shift
         MAXDEPTH=$1
         shift
         ;;
      --)
         shift
         break
         ;;
      *)
         #echo "-Got a star..."
         shift
         ;;
   esac
done
#P1=$1
#P2=$2
#P3=$3
#P4=$4
#
#echo "P1:    $P1"
#echo "P2:    $P2"
#echo "P3:    $P3"
#echo "P4:    $P4"
#echo "Param: $param"
#
##################################################################################################################################################
#
#if [[ $1 == "-h" ]]; then
#   exit
#fi
#####
if [[ ! -z $4 ]]; then
   echo
   echo "-Wrong given wildcard"
   echo
   exit
fi
#
if [[ -z $1 ]]; then
   P1=1
elif [[ $1 == 0 ]]; then
   P1=1
else
   isnum $1; ISNUM=$?
   if [[ $ISNUM == 0 ]]; then
      P1=$1
      P3=$3
   else
      P1=1
      P3=$1
   fi
fi
#
if [[ -z $2 ]]; then
   P2="day"
else
   P2=$2
fi
#
#echo "P1=$P1"
#echo "P2=$P2"
#echo "P3=$P3"
#echo
#
# -atime  -  Access time days (24 hours)
# -ctime  -  Creation time days (24 hours)
# -mtime  -  Modification time days (24 hours)
#            -N=less than N days, N=exactly N days, +N=more than N days
#
# -amin   -  Access time minutes
# -cmin   -  Cration time minutes
# -mmin   -  Modification time minutes
#            -N=less than N minutes, N=exactly N minutes, +N=more than N minutes
#
echo
if [[ $P2 == "d" || $P2 == "day" || $P2 == "days" ]]; then
   N=$P1
   OP="-mtime"
elif [[ $P2 == "w" || $P2 == "week" || $P2 == "weeks" ]]; then
   let N=7*$P1
   OP="-mtime"
elif [[ $P2 == "h" || $P2 == "hour" || $P2 == "hours" ]]; then
   let N=60*$P1
   OP="-mmin"
elif [[ $P2 == "m" || $P2 == "min" || $P2 == "minute" || $P2 == "minutes" ]]; then
   let N=$P1
   OP="-mmin"
else
   echo "-Unrecognized parameter $P2"
   echo
   exit
fi
if [[ -z $P3 ]]; then
   echo find . -maxdepth $MAXDEPTH $OP -$N -ls | grep -v " .$"
   find . -maxdepth $MAXDEPTH $OP -$N -ls | grep -v " .$"
else
   echo find . -maxdepth $MAXDEPTH -iname "$P3" $OP -$N -ls | grep -v " .$"
   find . -maxdepth $MAXDEPTH -iname "$P3" $OP -$N -ls | grep -v " .$"
fi
echo

Take it or leave it.... 8)

_________________
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...


02 okt 2021, 17:04
Profil WWW
Användarvisningsbild

Blev medlem: 08 aug 2010, 12:49
Inlägg: 2909
Ort: Göteborg
OS: Ubuntu
Utgåva: 21.04 Hirsute Hippo
Svara med citat
Inlägg Re: Since - användbart script...
Detta skall jag försöka lägga på minnet. Verkar vara ett bra hjälpmedel om (dvs.när) man har strulat till det. Och ja, find() är ett kommando jag bara har använt ett fåtal gånger, och varje gång blivit konfunderad över komplexiteten.

Tack för att du delar!


03 okt 2021, 11:27
Profil
Användarvisningsbild

Blev medlem: 05 apr 2008, 23:09
Inlägg: 5951
Ort: Göteborg/Mölndal/Falkenberg
OS: Ubuntu
Svara med citat
Inlägg Re: Since - användbart script...
Själv använder jag det rätt ofta. När något krånglar och jag vill ha reda på vad som har förändrats sedan det funkade, typ:
Kod:
cd /etc
since 2 days
...eller när jag inte kommer ihåg var jag sparat en bild eller ett dokument:
Kod:
cd
since -r 2 weeks '*.png'
since -r 4 weeks '*.pdf'
... :)

_________________
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...


03 okt 2021, 12:51
Profil WWW
Användarvisningsbild

Blev medlem: 05 apr 2008, 23:09
Inlägg: 5951
Ort: Göteborg/Mölndal/Falkenberg
OS: Ubuntu
Svara med citat
Inlägg Re: Since - användbart script...
Ett lite enklare script på samma tema, som jag brukar använda när filsystemet håller på att krasha på grund av att någon fil har blivit för stor. Eller inte krasha alltså, men då man har allvarliga problem genom att disken är full....

Själv kallar jag scriptet för "big", men du får kalla det för vad du vill...
Kod:
#! /bin/bash
#
echo
du --max-depth 1 $1 | sort -n | awk '{ print substr($0, index($0,$2)) }' | \
while read DIR; do
   if [[ "$DIR" != "." ]]; then
      du --max-depth 0 -h "${DIR}" 2> /dev/null
   fi
done
# du --max-depth 0 -h .
echo
Det visar varifrån, där du just nu står, som det finns något som tar upp mest plats på disken. Använd detta ihop med "since" ovan, så kan du avhjälpa många problem.... :)

_________________
Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...


05 okt 2021, 21:10
Profil WWW
Visa inlägg nyare än:  Sortera efter  
Svara på tråd   [ 4 inlägg ] 

Vilka är online

Användare som besöker denna kategori: Inga registrerade användare och 4 gäster


Du kan inte skapa nya trådar i denna kategori
Du kan inte svara på trådar i denna kategori
Du kan inte redigera dina inlägg i denna kategori
Du kan inte ta bort dina inlägg i denna kategori
Du kan inte bifoga filer i denna kategori

Sök efter:
Hoppa till:  
cron
Main Engineer for phpBB3: Bertie at phpBB.com © 2000 - 2002, 2005 - 2007, the Group behind the Open Source code of phpBB.
Designed by STSoftware, modified by Katt, Konservburk & Peetra. Swedish translation by Peetra & phpBB Sweden © 2006-2011