Re: remove double quote character from file names

From: Matthew Seaman <matthew_at_FreeBSD.org>
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