I have multiple files as below
File1[Pattern].txt
File2[Pattern].txt
File3[Pattern].txt
I want to remove [Pattern] from all the files in a directory.
And finally, the file names should be as below.
File1.txt
File2.txt
File3.txt
I have multiple files as below
File1[Pattern].txt
File2[Pattern].txt
File3[Pattern].txt
I want to remove [Pattern] from all the files in a directory.
And finally, the file names should be as below.
File1.txt
File2.txt
File3.txt
With bash parameter expansion (${f%%\[*\]*}) to strip off the portion starting from (first) [ (from left), and using mv to rename:
for f in *.txt; do echo mv -- "$f" "${f%%\[*\]*}".txt; done
Drop echo for actual action.
With rename (prename), the matched group 1 matches the portion before first [ and second group matches literal .txt. In the replacement we have just used the captured groups:
rename -n 's/^([^[]+)\[[^]]+\](\.txt)$/$1$2/' *.txt
Drop -n for actual action.
