How to remove temp files without changing the directory's modification timestamp?












2















I work on testcase, each of being a subdirectory of ~/test. It's convenient to see which were the testcases I worked most recently using something like ls -rtl. Now I'd like to remove certain temporary files from the test directories; alas, that would change the timestamp of the directories.



Is it possible to remove a file from a directory without changing the directory's modification timestamp?










share|improve this question























  • can the temporary files be placed somewhere else? because the filename is part of the directory, not the file itself, so when a filename goes away...

    – thrig
    May 22 '18 at 20:20
















2















I work on testcase, each of being a subdirectory of ~/test. It's convenient to see which were the testcases I worked most recently using something like ls -rtl. Now I'd like to remove certain temporary files from the test directories; alas, that would change the timestamp of the directories.



Is it possible to remove a file from a directory without changing the directory's modification timestamp?










share|improve this question























  • can the temporary files be placed somewhere else? because the filename is part of the directory, not the file itself, so when a filename goes away...

    – thrig
    May 22 '18 at 20:20














2












2








2








I work on testcase, each of being a subdirectory of ~/test. It's convenient to see which were the testcases I worked most recently using something like ls -rtl. Now I'd like to remove certain temporary files from the test directories; alas, that would change the timestamp of the directories.



Is it possible to remove a file from a directory without changing the directory's modification timestamp?










share|improve this question














I work on testcase, each of being a subdirectory of ~/test. It's convenient to see which were the testcases I worked most recently using something like ls -rtl. Now I'd like to remove certain temporary files from the test directories; alas, that would change the timestamp of the directories.



Is it possible to remove a file from a directory without changing the directory's modification timestamp?







directory timestamps






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked May 22 '18 at 20:17









MichaelMichael

22625




22625













  • can the temporary files be placed somewhere else? because the filename is part of the directory, not the file itself, so when a filename goes away...

    – thrig
    May 22 '18 at 20:20



















  • can the temporary files be placed somewhere else? because the filename is part of the directory, not the file itself, so when a filename goes away...

    – thrig
    May 22 '18 at 20:20

















can the temporary files be placed somewhere else? because the filename is part of the directory, not the file itself, so when a filename goes away...

– thrig
May 22 '18 at 20:20





can the temporary files be placed somewhere else? because the filename is part of the directory, not the file itself, so when a filename goes away...

– thrig
May 22 '18 at 20:20










2 Answers
2






active

oldest

votes


















3














You'll have to reset the timestamp on the directory after removing the files. Assuming GNU tools, something like this should work:



mtime=$(stat -c %y dir)            # get the timestamp, store in $mtime
rm dir/somefile dir/someotherfile # do whatever you need
touch -d "$mtime" dir # set the timestamp back


That resets the modification (mtime) and access (atime) timestamps on the directory to the original modification timestamp, but also sets the change timestamp (ctime) to the current time. Changing the ctime is unavoidable, but you probably don't care about it or atime.






share|improve this answer

































    0














    The touch command provides the -r option which allows you to touch a file with the same timestamps as a reference file. As such, you could do this:



    touch -r /dir/somefile /tmp/_thetimestamps  # save the timestamps in /tmp/_thetimestamps
    rm /dir/somefile # do whatever you need
    touch -r /tmp/_thetimestamps /dir # set the timestamps back


    Linux Man:



    -r, --reference=FILE
    use this file's times instead of current time


    Unix Man:



    -r       Use the access and modifications times from the specified file
    instead of the current time of day.





    share|improve this answer










    New contributor




    Dave is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
    Check out our Code of Conduct.




















      Your Answer








      StackExchange.ready(function() {
      var channelOptions = {
      tags: "".split(" "),
      id: "106"
      };
      initTagRenderer("".split(" "), "".split(" "), channelOptions);

      StackExchange.using("externalEditor", function() {
      // Have to fire editor after snippets, if snippets enabled
      if (StackExchange.settings.snippets.snippetsEnabled) {
      StackExchange.using("snippets", function() {
      createEditor();
      });
      }
      else {
      createEditor();
      }
      });

      function createEditor() {
      StackExchange.prepareEditor({
      heartbeatType: 'answer',
      autoActivateHeartbeat: false,
      convertImagesToLinks: false,
      noModals: true,
      showLowRepImageUploadWarning: true,
      reputationToPostImages: null,
      bindNavPrevention: true,
      postfix: "",
      imageUploader: {
      brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
      contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
      allowUrls: true
      },
      onDemand: true,
      discardSelector: ".discard-answer"
      ,immediatelyShowMarkdownHelp:true
      });


      }
      });














      draft saved

      draft discarded


















      StackExchange.ready(
      function () {
      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f445419%2fhow-to-remove-temp-files-without-changing-the-directorys-modification-timestamp%23new-answer', 'question_page');
      }
      );

      Post as a guest















      Required, but never shown

























      2 Answers
      2






      active

      oldest

      votes








      2 Answers
      2






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes









      3














      You'll have to reset the timestamp on the directory after removing the files. Assuming GNU tools, something like this should work:



      mtime=$(stat -c %y dir)            # get the timestamp, store in $mtime
      rm dir/somefile dir/someotherfile # do whatever you need
      touch -d "$mtime" dir # set the timestamp back


      That resets the modification (mtime) and access (atime) timestamps on the directory to the original modification timestamp, but also sets the change timestamp (ctime) to the current time. Changing the ctime is unavoidable, but you probably don't care about it or atime.






      share|improve this answer






























        3














        You'll have to reset the timestamp on the directory after removing the files. Assuming GNU tools, something like this should work:



        mtime=$(stat -c %y dir)            # get the timestamp, store in $mtime
        rm dir/somefile dir/someotherfile # do whatever you need
        touch -d "$mtime" dir # set the timestamp back


        That resets the modification (mtime) and access (atime) timestamps on the directory to the original modification timestamp, but also sets the change timestamp (ctime) to the current time. Changing the ctime is unavoidable, but you probably don't care about it or atime.






        share|improve this answer




























          3












          3








          3







          You'll have to reset the timestamp on the directory after removing the files. Assuming GNU tools, something like this should work:



          mtime=$(stat -c %y dir)            # get the timestamp, store in $mtime
          rm dir/somefile dir/someotherfile # do whatever you need
          touch -d "$mtime" dir # set the timestamp back


          That resets the modification (mtime) and access (atime) timestamps on the directory to the original modification timestamp, but also sets the change timestamp (ctime) to the current time. Changing the ctime is unavoidable, but you probably don't care about it or atime.






          share|improve this answer















          You'll have to reset the timestamp on the directory after removing the files. Assuming GNU tools, something like this should work:



          mtime=$(stat -c %y dir)            # get the timestamp, store in $mtime
          rm dir/somefile dir/someotherfile # do whatever you need
          touch -d "$mtime" dir # set the timestamp back


          That resets the modification (mtime) and access (atime) timestamps on the directory to the original modification timestamp, but also sets the change timestamp (ctime) to the current time. Changing the ctime is unavoidable, but you probably don't care about it or atime.







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited May 22 '18 at 20:35

























          answered May 22 '18 at 20:29









          ilkkachuilkkachu

          58.7k892165




          58.7k892165

























              0














              The touch command provides the -r option which allows you to touch a file with the same timestamps as a reference file. As such, you could do this:



              touch -r /dir/somefile /tmp/_thetimestamps  # save the timestamps in /tmp/_thetimestamps
              rm /dir/somefile # do whatever you need
              touch -r /tmp/_thetimestamps /dir # set the timestamps back


              Linux Man:



              -r, --reference=FILE
              use this file's times instead of current time


              Unix Man:



              -r       Use the access and modifications times from the specified file
              instead of the current time of day.





              share|improve this answer










              New contributor




              Dave is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
              Check out our Code of Conduct.

























                0














                The touch command provides the -r option which allows you to touch a file with the same timestamps as a reference file. As such, you could do this:



                touch -r /dir/somefile /tmp/_thetimestamps  # save the timestamps in /tmp/_thetimestamps
                rm /dir/somefile # do whatever you need
                touch -r /tmp/_thetimestamps /dir # set the timestamps back


                Linux Man:



                -r, --reference=FILE
                use this file's times instead of current time


                Unix Man:



                -r       Use the access and modifications times from the specified file
                instead of the current time of day.





                share|improve this answer










                New contributor




                Dave is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                Check out our Code of Conduct.























                  0












                  0








                  0







                  The touch command provides the -r option which allows you to touch a file with the same timestamps as a reference file. As such, you could do this:



                  touch -r /dir/somefile /tmp/_thetimestamps  # save the timestamps in /tmp/_thetimestamps
                  rm /dir/somefile # do whatever you need
                  touch -r /tmp/_thetimestamps /dir # set the timestamps back


                  Linux Man:



                  -r, --reference=FILE
                  use this file's times instead of current time


                  Unix Man:



                  -r       Use the access and modifications times from the specified file
                  instead of the current time of day.





                  share|improve this answer










                  New contributor




                  Dave is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                  Check out our Code of Conduct.










                  The touch command provides the -r option which allows you to touch a file with the same timestamps as a reference file. As such, you could do this:



                  touch -r /dir/somefile /tmp/_thetimestamps  # save the timestamps in /tmp/_thetimestamps
                  rm /dir/somefile # do whatever you need
                  touch -r /tmp/_thetimestamps /dir # set the timestamps back


                  Linux Man:



                  -r, --reference=FILE
                  use this file's times instead of current time


                  Unix Man:



                  -r       Use the access and modifications times from the specified file
                  instead of the current time of day.






                  share|improve this answer










                  New contributor




                  Dave is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                  Check out our Code of Conduct.









                  share|improve this answer



                  share|improve this answer








                  edited 20 mins ago





















                  New contributor




                  Dave is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                  Check out our Code of Conduct.









                  answered 33 mins ago









                  DaveDave

                  1011




                  1011




                  New contributor




                  Dave is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                  Check out our Code of Conduct.





                  New contributor





                  Dave is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                  Check out our Code of Conduct.






                  Dave is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                  Check out our Code of Conduct.






























                      draft saved

                      draft discarded




















































                      Thanks for contributing an answer to Unix & Linux Stack Exchange!


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid



                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.


                      To learn more, see our tips on writing great answers.




                      draft saved


                      draft discarded














                      StackExchange.ready(
                      function () {
                      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f445419%2fhow-to-remove-temp-files-without-changing-the-directorys-modification-timestamp%23new-answer', 'question_page');
                      }
                      );

                      Post as a guest















                      Required, but never shown





















































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown

































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown







                      Popular posts from this blog

                      CARDNET

                      Boot-repair Failure: Unable to locate package grub-common:i386

                      濃尾地震