This is slightly more concise, but it seems to drop second fractions.
 Something else to consider is the Access time.  Hopefully this is helpful.


EPOCH_MTIME=$(stat -c %Y $FILE)
perl -pi -e 's/FOO/BAR/' "$FILE"
touch -d @$EPOCH_MTIME $FILE


Access: 2013-09-08 23:48:25.155170463 -0500
Modify: 2013-09-08 23:48:25.155170463 -0500
Change: 2013-09-08 23:48:25.155170463 -0500

Access: 2013-09-08 23:48:25.000000000 -0500
Modify: 2013-09-08 23:48:25.000000000 -0500
Change: 2013-09-09 00:39:02.306271692 -0500


-Gavin


On Fri, Sep 6, 2013 at 9:59 PM, Mike Miller <mbmiller+l at gmail.com> wrote:

> Changing the system clock is a very bad idea, but I guess you figured that
> out and sent the message anyway.  This means that you need a beer.
>
> I think the method I came up with is OK, but if there were a way to tell
> perl not to change the timestamp when the -i option is used, that would be
> better.  I guess this is telling me, but I don't understand it:
>
> http://www.velocityreviews.**com/forums/t890336-preserve-**timestamp.html<http://www.velocityreviews.com/forums/t890336-preserve-timestamp.html>
>
> which leads me here:
>
> http://perldoc.perl.org/**functions/utime.html<http://perldoc.perl.org/functions/utime.html>
>
> And I don't knoww what to do with that, so I might just stick to what I
> did last time.  ;-)
>
> Mike
>
>
>
> On Fri, 6 Sep 2013, Jeremy MountainJohnson wrote:
>
>  In Python the os module should have something to modify it (one would
>> think so since it can read this fs meta). If not, you could write a
>> script to change the system clock to the original read time stamp of
>> the file, modify the file, than change the clock back- would do the
>> job of maintaining the modified attribute. Heh, probably not easier,
>> but the best my work wired mind could come up with on a Friday :-)
>> --
>> Jeremy MountainJohnson
>> Jeremy.MountainJohnson at gmail.**com <Jeremy.MountainJohnson at gmail.com>
>>
>>
>> On Fri, Sep 6, 2013 at 5:17 PM, Mike Miller <mbmiller+l at gmail.com> wrote:
>>
>>> I don't know the best way to do this.  I wanted to change some files but
>>> I
>>> wanted to keep the original timestamps.  So I did it this way:
>>>
>>> # get the timestamp
>>> TIME_STRING=$(date -d "$(stat -c %y FILE)" +"%Y%m%d%H%M.%S")
>>>
>>> make changes to FILE
>>>
>>> # change the timestamp back to what it was before the change
>>> touch -t $TIME_STRING FILE
>>>
>>>
>>> My use was something like this:
>>>
>>> for FILE in $(grep -l FOO) ; do
>>>    TIME_STRING=$(date -d "$(stat -c %y "$FILE")" +"%Y%m%d%H%M.%S")
>>>    perl -pi -e 's/FOO/BAR/' "$FILE"
>>>    touch -t $TIME_STRING "$FILE"
>>> done
>>>
>>>
>>> So how do you all do this kind of thing?
>>>
>>> Mike
>>> ______________________________**_________________
>>> TCLUG Mailing List - Minneapolis/St. Paul, Minnesota
>>> tclug-list at mn-linux.org
>>> http://mailman.mn-linux.org/**mailman/listinfo/tclug-list<http://mailman.mn-linux.org/mailman/listinfo/tclug-list>
>>>
>> ______________________________**_________________
>> TCLUG Mailing List - Minneapolis/St. Paul, Minnesota
>> tclug-list at mn-linux.org
>> http://mailman.mn-linux.org/**mailman/listinfo/tclug-list<http://mailman.mn-linux.org/mailman/listinfo/tclug-list>
>>
>>  ______________________________**_________________
> TCLUG Mailing List - Minneapolis/St. Paul, Minnesota
> tclug-list at mn-linux.org
> http://mailman.mn-linux.org/**mailman/listinfo/tclug-list<http://mailman.mn-linux.org/mailman/listinfo/tclug-list>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.mn-linux.org/pipermail/tclug-list/attachments/20130909/2e00ff50/attachment.html>