Re: remove double quote character from file names

From: Per olof Ljungmark <peo_at_nethead.se>
Date: Sat, 11 Feb 2023 17:36:38 UTC
On 2/11/23 18:28, Matthew Seaman wrote:
> 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.
> 

Exactly what I needed, thanks a lot!