Re: remove double quote character from file names
Date: Sat, 11 Feb 2023 17:28:41 UTC
On 11/02/2023 16:13, Per olof Ljungmark wrote: > On 2/11/23 16:45, Arthur Chance wrote: >> On 11/02/2023 14:58, Per olof Ljungmark wrote: >>> Hi all, >>> >>> A little help on the way, I need to find and remove the double quote (") >>> character from all files in a directory structure containing hundreds of >>> thousands of files. >>> >>> I am sure plenty of you have done this before... I've gotten as far as >>> >>> find . -type f -name '*"*' -exec rename 's|"|in|g' {} \; >>> find: rename: No such file or directory >>> >>> The find part works but not renaming so I'm missing something there. >> >> There's no rename command in the base system. Perhaps you meant to >> install the sysutils/rename pkg but forgot? >> > > No, I thought rename was part of the base system stupid me. So, without > installing more ports I suppose sed(1) could do the job? > The tools from the base system that you need here are find(1), sed(1), mv(1) and sh(1). Something like the following _completely_ _untested_ code: ``` #!/bin/sh for oldfname in $( find . -type f -name '*"*' -print ); do newfname=$( echo $oldfname | sed -e 's/"/in/g' ) echo mv -nv $oldfname $newfname done ``` This prints out a list of 'mv' commands to effect the change you want. Which, as someone else wisely said you should examine closely to ensure it is actually doing the right thing. Then, when you're satisfied that it is, change 4 to read: mv -nv $oldfname $newfname ensure you have good backups, and go for it. Matthew