Find Files by Age and copy them to another directory

If you work with a lot of files, sometimes there is no way around sorting files, copying them out, deleting them etc. In this case I am looking for certain files, files that are not older than 1 year and want to copy them into another directory.

find . -iname '*.pdf' -type f -mtime -356 | xargs cp -t ../

Here i make use of the convinient pipe system of Linux/Unix |

The first expression (find) finds all files created in the last 365 days. These are then passed to the cp (Copy) command, which copies them into another directory.

The next xargs takes the list of files, transmitted by find and copy them to the parent .folder.

Search for a string in files and save the result

Search all files in this directory and all subdirectories containing a specific string and save the result in a file + 25 characters before and after the file This helps me very often when I have to search huge amounts of data and the terminal window can’t handle the result.

grep -r -o -P '.{0,25}searchstring.{0,25}' ./ > ~/search_result.txt

-r = recursive
-o = only matching, just the fitting line
-P = use Perl regular expressions
./ = in the actual directory

The > saves all output into a specifc file, in this case, its inside your homedirectory ~

Check If Service Is Running

Simple bash snippet to check if a service is running, if not -> send a mail to root. In this snippet



#!/bin/sh
SERVICE=apache2;

if ps ax | grep -v grep | grep $SERVICE > /dev/null
then
echo "$SERVICE service running, everything is fine"
else
echo "$SERVICE is not running, try to start it."
sudo service $SERVICE start
echo "$SERVICE is not running!" | mail -s "$SERVICE down" root
fi