Table of Contents

Various miscellany that doesn't fit anywhere else

date

Handy for getting the date, but you can also format it and include it the output when renaming things.

snippet.bash
DATE=$(date +%Y%m%d)

diff

You can compare two directories using…

snippet.bash
diff --brief -r dir1/ dir2/

Diffing on two different systems

find

I'm forever forgetting how to use find so have written down examples I found from here.

snippet.bash
# Find files of name blah in / (ignores case)
find / -iname blah
# Find files of name blah in / (case sensitive)
find / -name blah
# Find directories of name blah in /home
find /home -type d -name blah
# Find files using glob
find /home -type f -name "*.txt"
# Permissions 777
find / -type f -perm 0777 -print
# Without Permissions 777
find / -type f ! -perm 0777 -print
# File based on user
find /home -user blah
# File based on group
find /home -group blah
# Modified in the last 50 days
find / -mtime 50
# Accessed in the last 50 days
find / -atime 50
# Modified last 50-100 days
find -mtime +50 -mtime -100
# Modified in last hour
find / -mmin -60
# Files based on size
find / -szie +50M -size -100M

rename

Will rename files using an sed like syntax. For example to lowercase all file names

snippet.bash
rename 'y/A-Z/a-z/' *

md5 checksum

Generate the md5 (or otherwise) checksum for all files under a given directory

snippet.bash
# md5 sum for all files in the current directory, following symbolic links (-L)
find -L . -type f -exec md5sum '{}' \; > ~/checksum_of_files.md5

rsync

Specifying port

If you don't have you ~/.ssh/config set up to define the port for the target then you sometimes have to specify this on the command line call to rsync.

snippet.bash
rsync -av  -e 'ssh -p 2222' * target:~/tmp/.

Specific files

Put a list of the files you want to copy in a file and use --from-file=FILE

snippet.bash
rsync -av --from-file=some_files_to_copy.txt ~/ remote:~/tmp/.

sort

sort is a very useful utility, not only does it do what it says on the tin but it can also reduce a list of rows to unique observations with the -u flag.

tar

You can look at the contents of a tar ball without extracting them using…

snippet.bash
tar -ztf some.tar.gz

wc

Counts characters, words and lines, very handy.

snippet.bash
# Count number of files in a directory
ls -l | grep -v '^total' |  wc -l

wget

Useful for downloading web-pages and files.

snippet.bash
# -nd prevents creation of directory hierarchy
# -r recursive download
# -A only get items with specified extension
wget -nd -r -A jpg,jpeg,png,mp3 http://djriko.com/mixmases.htm

Argument list too long

This happens on occasions and there are some ways around it as explained here.