IP

LINUX HACK 20


Hack 20. Join Command


Join command combines lines from two files based on a common field.

In the example below, we have two files – employee.txt and salary.txt. Both have employee-id as common field. So, we can use join command to combine
the data from these two files using employee-id as shown below.

 
$  cat  employee.txt
100  Jason  Smith

200  John  Doe

300  Sanjay  Gupta

400  Ashok  Sharma

$  cat  bonus.txt

100  $5,000

200  $500

300  $3,000

400  $1,250

$  join  employee.txt  bonus.txt

100  Jason  Smith  $5,000

200  John  Doe  $500

300  Sanjay  Gupta  $3,000

400  Ashok  Sharma  $1,250




LINUX HACK 19

Hack 19. Suppress Standard Output and Error

Message


Sometime while debugging a shell script, you may not want to see either the standard output or standard error message. Use /dev/null as shown below for suppressing the output.


Suppress standard output using > /dev/null


This will be very helpful when you are debugging shell scripts, where you don’t want to display the echo statement and interested in only looking at the error messages.
 
#  cat  file.txt  >  /dev/null

#  ./shell-script.sh  >  /dev/null 

Suppress standard error using 2> /dev/null


This is also helpful when you are interested in viewing only the standard output and don’t want to view the error messages.
 
#  cat  invalid-file-name.txt  2>  /dev/null

#  ./shell-script.sh  2>  /dev/null

LINUX HACK 18

Hack 18. 
Find Command:
 
find is frequently used command to find files in the UNIX filesystem based on numerous conditions. Let us review some practice examples of find command.
Syntax: find [pathnames] [conditions]
 

How to find files containing a specific word in its name?
The following command looks for all the files under /etc directory with mail in the filename.
# find /etc -name "*mail*"
 

How to find all the files greater than certain size?
The following command will list all the files in the system greater than 100MB.
# find / -type f -size +100M
 

How to find files that are not modified in the last x number of days?
The following command will list all the files that were modified more than 60 days ago under the current directory.

# find . -mtime +60
 

How to find files that are modified in the last x number of days?
The following command will list all the files that were modified in the last two days under the current directory.
# find . –mtime -2
How to delete all the archive files with extension *.tar.gz and greater than 100MB?
Please be careful while executing the following command as you don’t want to delete the files by mistake. The best practice is to execute the same command with ls –l to make sure you know which files will get deleted when you execute the command with rm.
# find / -type f -name *.tar.gz -size +100M -exec ls -l {} \;
# find / -type f -name *.tar.gz -size +100M -exec rm -f {} \;
 

How to archive all the files that are not modified in the last x number of days?
The following command finds all the files not modified in the last 60 days under /home/jsmith directory and creates an archive files under /tmp in the format of ddmmyyyy_archive.tar.
# find /home/jsmith -type f -mtime +60 | xargs tar -cvf /tmp/`date '+%d%m%Y'_archive.tar`
On a side note, you can perform lot of file related activities (including finding files) using midnight commander GUI, a powerful text based file manager for Unix.