chutsu,
Yes, you were clear. I wasn't.... My sentence was missing a word, so it
didn't make sense to you.
As for the anomaly of the trailing slash, I turned out to be wrong. Your
syntax of leaving off the trailing slash is the only syntax that worked
for me. The substitution syntax of
/<search-string>/<replacement-string/ as used by sed and vim gave errors
until I left off the trailing slash.
For anyone else that needs to rename part of a filename, here's an
example that worked for me--thanks to chutsu's suggestions and help:
#"for i in *\&*" limits the list of filenames passed to the mv
command to ONLY filenames containing '&'.
#
#mv "$i" "${i/\&/and}" replaces '&' with 'and' in each filename
passed to it.
for i in *\&*; do mv "$i" "${i/\&/and}"; done
------------------------------
chutsu wrote:
> Because if you remember, at the start of the for loop:
>
> for $i in *
>
> which I declared a bash variable called "i", and what ever it finds
> (filenames), the filename will be assigned to "i", then later on I
> used "i/search/replace" to say in variable "i" search and replace....
>
> Hope my explanations where clear!
>
> On Dec 21, 6:12 pm, chutsu <[email protected]> wrote:
>
>> I think so... lol.. am not too sure what you mean, but the "i" just
>> means that your taking what ever filename the for loop is currently
>> handling, and doing a search and replace on variable "i".
>>
>> On Dec 21, 6:08 pm, tuxsun1 <[email protected]> wrote:
>>
>>
>>> I may have replied too hastily. The 'i' is the original variable your
>>> using a regex substitution form, is that it?
>>>
>>> chutsu wrote:
>>>
>>>> Well I think the follow code will help you
>>>>
>>>> for i in *;do mv "$i" "${i/\&/} done;
>>>>
>>>> -So basically the for loop runs through every file in that particular
>>>> directory.
>>>> -Uses the "mv" command to rename files, the second statement is just
>>>> search and replace
>>>> -The "/\&/" means I want to search the term "&" and replace it
>>>> with "something".
>>>> -NOTE: the "\" infront of the "&", because you need to escape special
>>>> symbols such as "%" "-" etc ...
>>>> -After the second "/" in the search and replace term you can put
>>>> whatever you want...
>>>> eg.) if I wanted to replace "&" with "HELLO" the move command will
>>>> be:
>>>>
>>>> mv "$i" "${i/\&/HELLO}"
>>>>
>>>> Hope this helps :)
>>>> Chris
>>>>
>>>> On Dec 21, 5:15 pm, tuxsun1 <[email protected]> wrote:
>>>>
>>>>> I have always used Bash variable substitution chars (#, ##, %, %%) to
>>>>> rename files when replacing the beginning or end of a filename.
>>>>>
>>>>> Now I have a need to replace the middle portion of filenames from their
>>>>> html code, '&', to 'and'.
>>>>>
>>>>> e.g. list of filenames
>>>>>
>>>>> Payables & Receivables
>>>>> Sales & Marketing
>>>>> Shipping & Receiving
>>>>>
>>>>> Normally, I would use something like, for i in '*&*'; do mv "$i"
>>>>> (this is where I'm stumped); done
>>>>>
>>>>> TIA!
>>>>>
>>
>
>
--
You received this message because you are subscribed to the Linux Users Group.
To post a message, send email to [email protected]
To unsubscribe, send email to [email protected]
For more options, visit our group at
http://groups.google.com/group/linuxusersgroup