basicsys@mars~/lec10>find t -exec echo hi \; hi hi hi hi hi hi hi hi hi hi hi basicsys@mars~/lec10>find t -name f* -exec echo hi \; -print hi t/d1/f4 hi t/d1/d3/f2 hi t/d1/d3/f3 hi t/f1 hi t/d2/d3/f5 basicsys@mars~/lec10>find t -name f* -exec echo -n hi \; -print hit/d1/f4 hit/d1/d3/f2 hit/d1/d3/f3 hit/f1 hit/d2/d3/f5 basicsys@mars~/lec10>find t -name f* -exec echo -n "hi " \; -print0 -exec echo " bye" \; hi t/d1/f4 bye hi t/d1/d3/f2 bye hi t/d1/d3/f3 bye hi t/f1 bye hi t/d2/d3/f5 bye basicsys@mars~/lec10>find t -name f* -print -exec head -1 {} \; t/d1/f4 I am file f4 indirectory t/d1 t/d1/d3/f2 I am file f2 at directory t/d1/d3 t/d1/d3/f3 I am file f3 at directory t/d1/d3 t/f1 I am file f1 inside directory t t/d2/d3/f5 I am file f5 in directory t/d2/d3 basicsys@mars~/lec10>P1 t/f1 yyyy basicsys@mars~/lec10>cat P1 #!/bin/bash head -2 $1 | tail -1 basicsys@mars~/lec10>find t -name f* -print -exec P1 {} \; t/d1/f4 abc t/d1/d3/f2 5ab t/d1/d3/f3 dd t/f1 yyyy t/d2/d3/f5 I am file f5 in directory t/d2/d3 basicsys@mars~/lec10>cat finder #!/bin/bash find $1 -type f -exec egrep -l $2 {} \; basicsys@mars~/lec10>finder t ab t/d1/f4 t/d1/d3/f2 t/d1/d3/f3 basicsys@mars~/lec10>finder t yyy t/f1 basicsys@mars~/lec10>cat get_file_name #!/bin/bash echo $1 | tr "/" "\n" | tail -1 basicsys@mars~/lec10>get_file_name a/b/c c basicsys@mars~/lec10>cat P4 #!/bin/bash find $1 -exec get_file_name {} \; basicsys@mars~/lec10>P4 t t d1 f4 d3 f2 f3 a1 f1 d2 d3 f5 basicsys@mars~/lec10>tree t t |-- d1 | |-- d3 | | |-- a1 | | |-- f2 | | `-- f3 | |-- f3 | `-- f4 |-- d2 | `-- d3 | `-- f5 |-- f1 `-- f2 basicsys@mars~/lec10>cat remove_dup #!/bin/bash find $1 -type f -exec get_file_name {} \; >|tmp sort tmp | uniq -d >| tmp1 for x in $(cat tmp1) do find $1 -name $x -type f -exec rm -i {} \; done basicsys@mars~/lec10>remove_dup t rm: remove regular file `t/f2'? n rm: remove regular file `t/d1/d3/f2'? n rm: remove regular file `t/d1/f3'? n rm: remove regular file `t/d1/d3/f3'? n basicsys@mars~/lec10>cat F1 yyy moshe1 moshe2 no mosh abc basicsys@mars~/lec10>awk '/moshe/ {print;print;print}' F1 yyy moshe1 yyy moshe1 yyy moshe1 moshe2 moshe2 moshe2 basicsys@mars~/lec10>awk '{print;print;print}' F1 yyy moshe1 yyy moshe1 yyy moshe1 moshe2 moshe2 moshe2 no mosh no mosh no mosh abc abc abc basicsys@mars~/lec10>cat F1 yyy moshe1 moshe2 no mosh abc basicsys@mars~/lec10>cat F2 aa bb cc dd ee fff gg basicsys@mars~/lec10>awk '{print $3 $1}' F2 ccaa fffdd basicsys@mars~/lec10>awk '{print $3,$1}' F2 cc aa fff dd basicsys@mars~/lec10>awk '{print $3" "$1}' F2 cc aa fff dd basicsys@mars~/lec10>awk '{print $3,$1}' F2 cc aa fff dd basicsys@mars~/lec10>awk '{print $3" "$1}' F2 cc aa fff dd basicsys@mars~/lec10>awk '{print $0,NF}' F2 aa bb cc 3 dd ee fff gg 4 basicsys@mars~/lec10>awk '{print $0,$NF}' F2 aa bb cc cc dd ee fff gg gg basicsys@mars~/lec10>awk '{print $NF}' F2 cc gg basicsys@mars~/lec10>awk '{print NR,$0}' F1 F2 1 yyy moshe1 2 moshe2 3 no mosh 4 abc 5 aa bb cc 6 dd ee fff gg basicsys@mars~/lec10>awk '{print FNR,$0}' F1 F2 1 yyy moshe1 2 moshe2 3 no mosh 4 abc 1 aa bb cc 2 dd ee fff gg basicsys@mars~/lec11>cat F4 aa 8 2 bb 7 6 cc 2 4 basicsys@mars~/lec10>cat F4 aa 8 2 bb 7 6 cc 2 4 basicsys@mars~/lec10>awk '$3>2 {print $0,$2*$3}' F4 bb 7 6 42 cc 2 4 8 basicsys@mars~/lec10>awk '$3>2 {print $0,x*1}' F4 bb 7 6 0 cc 2 4 0 basicsys@mars~/lec10>awk '$3>2 {print $0,x+1}' F4 bb 7 6 1 cc 2 4 1 basicsys@mars~/lec10>awk '$3>2 {x=5;print $0,x+1}' F4 bb 7 6 6 cc 2 4 6 basicsys@mars~/lec10>awk '$3>2 {print $3/3}' F4 2 1.33333 basicsys@mars~/lec10>echo $[4/3] 1 basicsys@mars~/lec10>cat F3 1999 12 ab Fiat 200000 130 cc Subaru basicsys@mars~/lec10>awk '{printf "year %8d no %4d car %-8s good\n",$1,$2,$4}' F3 year 1999 no 12 car Fiat good year 200000 no 130 car Subaru good