Using the below command my script excutes succesfully.
for file in collectorlist* ; do mv "$file" "${/bak_/{file}}" ; done
Now i want to move the bak_{file} to {file} to which is resetting to the original file name. i tried the below way , throws an error., your suggestion is appreciated.
for file in bak_collectorlist*; do mv "$file" "${/bak_/{file}}" ; done
Use:
for file in bak_collectorlist*; do mv "$file" "${file/bak_/}" ; done
From bash man:
${parameter/pattern/string
} Pattern substitutionThe pattern is expanded to produce a pattern just as in pathname expansion. Parameter is expanded and the longest match of pattern against its value is replaced with string. If pattern begins with /, all matches of pattern are replaced with string. Normally only the first match is replaced. If pattern begins with #, it must match at the beginning of the expanded value of parameter. If pattern begins with %, it must match at the end of the expanded value of parameter. If string is null, matches of pattern are deleted and the / following pattern may be omitted. If parameter is @ or *, the substitution operation is applied to each positional parameter in turn, and the expansion is the resultant list. If parameter is an array variable subscripted with @ or *, the substitution operation is applied to each member of the array in turn, and the expansion is the resultant list
.
Demo
$ ll bak_collectorlist*
-rw-r----- 1 klashxx klashxx 2 Jun 19 09:13 bak_collectorlist
-rw-r----- 1 klashxx klashxx 2 Jun 19 09:13 bak_collectorlist2
$
$ for file in bak_collectorlist*;do echo "$file" "${file/bak_/}" ; done
bak_collectorlist collectorlist
bak_collectorlist2 collectorlist