for FILE in *.txt; do touch -r $FILE.bak $FILE; done


On Mon, Sep 9, 2013 at 11:28 PM, Gavin Purcell <mkorangestripe at gmail.com>wrote:

> Mike, that's even better.  Also your for-loop works without the Command
> Substitution:
> for FILE in *.txt; do touch -r list $FILE; done
>
> -Gavin
>
>
> On Mon, Sep 9, 2013 at 10:16 PM, Mike Miller <mbmiller+l at gmail.com> wrote:
>
>> Yes!!  Thanks.  That is much better.  I was trying to figure out
>> something like that, something simpler, but I didn't spend enough time on
>> the docs for "touch" -- that was the key.  I was looking to much at other
>> things like stat.
>>
>> Now I see that the epoch %s time isn't needed because this works just as
>> well:
>>
>> MTIME=$(stat -c %y "$FILE")
>>
>> perl -pi -e 's/FOO/BAR/' "$FILE"
>> touch -d "$MTIME" "$FILE"
>>
>> Best of all, touch has a -r option that can be used in this kind of case.
>> Consider this example:
>>
>> perl -pi.bak -e 's/FOO/BAR/' *.txt
>>
>> for FILE in $(ls -1 *.txt) ; do touch -r "${FILE}.bak" "$FILE" ; done
>>
>> rm *.txt.bak
>>
>> Mike
>>
>>
>>
>> On Mon, 9 Sep 2013, Gavin Purcell wrote:
>>
>>  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<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>
>>>> <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 <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>
>>>>>> <ht**tp://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>
>>>>> <ht**tp://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>
>>>> <ht**tp://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/4c2c7435/attachment.html>