= Filter unique values from third column, separated by space  =
{{{#!highlight bash
cat datax.log |  awk -F ' ' '/IMEI/{print $3}' | sort | uniq | wc -l
}}}

= Filter unique values from third column, separated by :  =
{{{#!highlight bash
cat datax.log |  awk -F ':' '/IMEI/{print $3}' | sort | uniq | wc -l
}}}


= Search for text in files recursively  =
{{{#!highlight bash
cd startFolder
grep -H "textToSearch" * -R
}}}

= Copy files to other destination (Win32) =
{{{
@echo off
REM Mount drive
echo Mounting remote drive
net use z: \\192.168.1.1\backs password /USER:userx

REM copy current day files
echo Copying current day files
forfiles -p "I:" -s -m *FULL*.sqb -d +0 -c "cmd /c copy @path Z:\BACKUPS\@file"

echo Deleting files older than 7 days
REM delete files older than 7 days
forfiles -p "Z:\BACKUPS" -m *.sqb -d 7 -c "cmd /c del @path"
}}}

= Gzip files that where last modified in 30 or more days (Win32) =
{{{
forfiles /p "c:\logs" /d -30 /m *.log /c "cmd /c gzip @path "
}}}

= Run task every day at 01:00 (Win32) =
{{{
at 01:00 /every:M,T,W,Th,F,S,Su c:\task.bat
}}}

= Block responses to pings =
{{{#!highlight bash
#block responses to pings
iptables -A INPUT -p icmp -m icmp --icmp-type echo-request -j DROP
iptables -L
#restore responses to pings
iptables -F
iptables -L
}}}

= Zip SVN modified Java files =
{{{#!highlight bash
#!/bin/sh
# chmod 755 /usr/local/bin/modifiedJavaSvn.sh # on CygWin
svn status | awk '/.java/{ print( gensub( /\\/,"/","g",$2) ); }' | xargs -i zip modifiedJavaFiles.zip {}
unzip -v modifiedJavaFiles.zip
}}}

== Deploy EAR script ==
{{{#!highlight bash
#!/usr/bin/bash
# deploy EAR in remote JBoss . 
# Must have pub SSH keys (authorized_keys) deployed on remote server
# Can be used with cygwin
FILEX=sample.ear
DEST_DIR=/opt/jboss/server/default/deploy/
ECLIPSE_PROJECT=/home/userx/workspace/sample-ear/

deploy()
{
  SERVER=$1
  USER=$2
  echo "Deploying in $SERVER ..."

  cd $PROJECT
  scp target/$FILEX $USER@$SERVER:/tmp
  ssh $USER@$SERVER -C "mv /tmp/$FILEX $DEST_DIR/$FILEX"
  ssh $USER@$SERVER -C "ls -lah $DEST_DIR"
  ssh $USER@$SERVER -C "chmod 666  $DEST_DIR/$FILEX"
  ssh $USER@$SERVER -C "/sbin/service jboss abort"
  ssh $USER@$SERVER -C "sudo /sbin/service jboss start"
}

deploy "example-server" "userx"
}}}

== List JAR contents to file ==
 * cd ~/.m2/repository
 * find . -name "*.jar" | xargs -i jar -tf {} > /tmp/explodedJars.txt
 * find . -name "*.jar" | xargs -i sh -c "echo {} ; jar -tf {}" > /tmp/explodedJars.txt

== Size of each directory inside current directory ==
 * find . -maxdepth 1 -type d | xargs -i du {} -hs

== Backup folders in HOME ==
{{{#!highlight bash
#!/bin/bash
# cd ~
# ln -s scripts/backup.sh backup.sh
# sh backup.sh
DATE=`date '+%Y%m%d%H%M%S'`
FILENAME=~/backups/backup_$DATE.tar.gz
cd ~
mkdir -p ~/backups
rm $FILENAME
tar cvzf $FILENAME Documents GNUstep ThunderbirdMail Desktop .Skype scripts moin-1.9.7
# tar tvzf backup_20150108103242.tar.gz
}}}

== Get installed updates on Windows ==
{{{
wmic qfe list brief /format:texttablewsys > updates.txt
}}}

== Find files modified less than an hour ago ==
{{{
find . -mtime -1h -name "*.cfg"
}}}

== Lock file to allow only one instance of a script to run ==
{{{#!highlight bash
#!/bin/sh
LOCK_FILE=$(echo "/var/tmp/lockTest.lck")
PID=$$
LOCKED=0
COUNT=0
echo "Trying to get lock to $PID in $LOCK_FILE"

while [ $LOCKED -eq "0" ] && [ $COUNT -le "3" ]; do
    if ( set -o noclobber; echo "$PID" > "$LOCK_FILE" ) 2> /dev/null; then
        LOCKED=1
    else        
        sleep 1
        COUNT=$(($COUNT+1))
        echo "Trying to get lock to $PID in $LOCK_FILE, retry $COUNT"
    fi    
done

if [ $LOCKED -eq "0" ]; then
    echo "Unable to get lock to $PID with $COUNT retries"
    exit 1
else
    echo "Lock acquired to $PID"    
fi   
#####################################
sleep 10
#####################################
rm -f "$LOCK_FILE"
LOCKED=0
echo "Released lock to $PID"
exit 0
}}}