Wednesday, October 26, 2005

fun with find and cut - explode text - bash programming

Using cut, you can explode strings based on delimiter.
For example running the following will list all files under the current directory recursively. Each filename in output will begin with ./


If we want to just display the directory names under the current level, we can use:

find |cut -d "/" -f 2

The -d option for cut lets you specify the delimiter. Normally the delimiter is the tab character.

The -f option allows you to output certain fields only.

The above will show multiple directory names in order found. To view only the unique directories sorted alphabetically with a current folder, use

find |cut -d "/" -f 2 | uniq | sort

To view the total count of the directories, use

find | cut -d "/" -f 2|sort|uniq|wc -l

cut [OPTION]... [FILE]...

Print selected parts of lines from each FILE to standard output.

Mandatory arguments to long options are mandatory for short options

-b, --bytes=LIST
output only these bytes

-c, --characters=LIST
output only these characters

-d, --delimiter=DELIM
use DELIM instead of TAB for field delimiter

-f, --fields=LIST
output only these fields; also print any line that contains no
delimiter character, unless the -s option is specified

-n with -b: donât split multibyte characters

-s, --only-delimited
do not print lines not containing delimiters

use STRING as the output delimiter the default is to use the
input delimiter

--help display this help and exit

output version information and exit

Use one, and only one of -b, -c or -f. Each LIST is made up of one
range, or many ranges separated by commas. Each range is one of:

N Nâth byte, character or field, counted from 1

N- from Nâth byte, character or field, to end of line

N-M from Nâth to Mâth (included) byte, character or field

For more information on cut see man cut.

find fun

Find all directories and files by specifying a pattern. In this example, you are finding all mail folders on Ensim Webppliance.

find /home/virtual/site*/fst/var/mail/

More fun with find

find /home/virtual/site*/fst/var/mail/|grep -v /$|grep -v "#"|grep -v "@"
find /home/virtual/site*/fst/var/mail/|grep -v /$|grep -v "#"|grep -v "@"|wc -l
find /home/virtual/site*/fst/var/mail/|grep -v /$|grep -v "#"|grep -v "@"|more


Post a Comment

Links to this post:

Create a Link

<< Home