From 85d066187635fb640e893bada65b814aefaa3e1a Mon Sep 17 00:00:00 2001 From: kuchy Date: Fri, 8 Apr 2022 04:06:03 +0200 Subject: [PATCH] feat: recursion --- EOPSY/task1/.modify.sh.swp | Bin 0 -> 12288 bytes EOPSY/task1/modify.sh | 198 ++++++++++++++++++++++++++++++++++--- 2 files changed, 182 insertions(+), 16 deletions(-) create mode 100644 EOPSY/task1/.modify.sh.swp diff --git a/EOPSY/task1/.modify.sh.swp b/EOPSY/task1/.modify.sh.swp new file mode 100644 index 0000000000000000000000000000000000000000..124be954c90251fcabb03d892d48c04f564c6d66 GIT binary patch literal 12288 zcmeI2TWB0r7{^bo)lTbOywp}X*`#d}*i1G>6txl2ib8EGH3h3uC%b2}V|HiOnc1Xi zdcl{9pn{gxLP5Orp=1xW-r|)h`vZ?;kPq8 zbIzIX`+t`?p&cFEaQhwd+JT(lbAb>K?p-_j%c7^x*t30(7_a3^Q~LTWpK#o|n`ap% z#P)EYxv{J!&GkX8U|Z%ITdi>eD;T%Ub)Nfx8V{yS$5xwcXUh~vZ`{(?$2_azPFh?r zSFK&Q{%%vbRex%eS1UMne%#(vwnojs^2c*##Vy#ysR6$u2nNA~t6&K%gn97e0wKPEFX0RL01m-EcoH6mM`0Qq*Z{Y}AS{LB zh7iBP5AZ#F2yesluos?!J+K>g!IQ8JrePdzgnn2C7s3Mgb-oZk!{_i3ya5N{C3pc2 zz%F9)4wu3_IB}K`U&E*HF&u%{;SpF1 zU9cDy!R2rnTngXJ6XFv%0{h`Pcow$9HrNUUxC_?8?Qkosf?J>)7Q%e^gB<=0o`Fdi zft4@_8MqRbz+$)pbk29de%J{+-~lMYYLIXNEP&&4|A)mro5=;&Q9?!^J-FbuOli6A zm+WGYj8?vt7lzT_Cw)h$g3R>fGJFkXMU&x&xV*t+w^W3`HM0w2kWwlMVS zA}A?G*v0xP*)8GnEWj1VZOo8k_5|a|URkU;`2YcA(e!k8L*Sk(?J9ER!hNPI5BD}V#;*a(A$@aCYp6vvB>2Q#&DBrinlrIBU z@*lCr9M=!*ymV_pwHD|k*d~lH#<5z_QAa!p)%w=ZH?%e4Sy3J&iI7Yk>5vg^p-slF zj>Fv+W1}U4hA?y(47J$~WKN%Gg|r$nQ?Y$t`yR(ER6FZsgb@bJXph*mNFLtXr?p68 z&{7hympnH#>pbctwpC}W zzDfBoESE9+lUu%`hI)FVge66{lG_ED^<-Ab<-R%4Z{E9lnYp}=2sA5{%ZMiF6YJ|S zFhcE(dX$ak!mpcXM8RxCvmstQD^aF7r%pA!;XRKgyH4^~3ge%6+H7*Gr-?ODwl(st zDavh)HW9lege{3PlP4}ci)d_&$?cG?{uf7~UaHhTa=##}03zR*P$mlIdK{k^OYXq+MzUqW5&TFUXc;c9?g$UoBfx z=uI4=mppRRbCLdgLsQ}p%Nq)|XNG00>&YJ&7#P-zY(Z0EAJm=_ZgbkGk8CHHC-R!PnXRj=YHO^t3kN!WKTvV(X2{( z!|2 specify sed pattern that will be executed on file names" - echo "-h show this help information" - ;; - esac - done +# the name of the script without a path +name=`basename $0` + +help() +{ + echo "-l -> lowerize file/folder name" + echo "-u -> uppercase file/folder name" + echo "-r [-l|u] -> lowerize or uppercase file/folder name recursively" + echo " -> call sed command operating on file/folder name" + echo "-r -> call sed command operating on file/folder recursively" + echo "-h -> display this message" } -show_help "$@" + + + +uppercase() +{ + + if test -z "$1" + then + error_msg "missing filename for -u" + exit 1 + fi + mv "$1" $(echo "$1" | sed -r -e 's/.*/\U&/'); + + + +} + +lowercase() +{ + if test -z "$1" + then + error_msg "missing filename for -l" + exit 1 + fi + if test -f "$1" + then + if test -d "$1" + then + error_msg "$1 is neither a file nor the folder" + exit 2 + fi + fi + mv "$1" $(echo "$1" | sed -r -e 's/.*/\L&/'); +} + +sneed() +{ + if test -z "$1" + then + error_msg "missing sed pattern" + exit 1 + fi + if test -z "$2" + then + error_msg "missing sed filename" + exit 2 + fi + echo "$1" + echo $1 + mv "$2" $(echo "$2" | sed $1) +} + +recursionSneed() +{ + if test -z "$1" + then + error_msg "missing sed pattern" + exit 1 + fi + + if test -z "$2" + then + error_msg "missing sed filename" + exit 2 + fi + + if test -d "$2" + then + sneed "$1" "$2" + cd "$2" + for file in * + do + recursionSneed "$1" "$file" + done + fi + + if test -f "$2" + then + sneed "$1" "$2" + fi + + + +} + +recursionLowercase() +{ + lowercase "$1" + set "$(echo "$1" | sed -r -e 's/.*/\L&/')" + for item in "$1"/* + do + if test -d "$item" + then + recursionLowercase "$item" + fi + if test -f "$item" + then + lowercase "$item" + fi + done +} + +recursionUppercase() +{ + uppercase "$1" + set "$(echo "$1" | sed -r -e 's/.*/\L&/')" + for item in "$1"/* + do + if test -d "$item" + then + recursionUppercase "$item" + fi + if test -f "$item" + then + uppercase "$item" + fi + done + +} + +recursion() +{ + if test -z "$1" + then + error_msg "missing argument for -r" + exit 1 + fi + + case "$1" in + -l|--lowercase) recursionLowercase "$2";; + -u|--uppercase) recursionUppercase "$2";; + *) recursionSneed "$1" "$2";; + esac +} + + + +# function for printing error messages to diagnostic output +error_msg() +{ + echo "$name: error: $1" 1>&2 +} + +# function for servicing -w option + + +# if no arguments given +if test -z "$1" +then + help +fi + + +# do with command line arguments +while test "x$1" != "x" +do + case "$1" in + -h|--help) help;; + -l|--lowercase) lowercase "$2";; + -r|--recursion) recursion "$2" "$3" ;; + -u|--upercase) uppercase "$2";; + *) sneed "$1" "$2" ;; + esac + shift +done + + + +