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>