file deletion in a directory with some conditions .

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • aki

    file deletion in a directory with some conditions .


    Hi All,

    I describe the problem as below.

    A directory( path known) , contains 0 to any number of files .
    The file names are with following structure :

    OMCID_NETYPE_NE NAME_NAMEOFTHEA PPLIEDFILE_APPL YDATE_trans.csv
    For example :

    4_TC_TC_48_NoST Configuration_1 971-1-1_trans.csv

    where
    OMCID =4
    NETYPE= TC
    NENAME= TC_48
    NAMEOFTHEAPPLIE DFILE=NoSTConfi guration
    APPLYDATE=1971-1-1

    i have to perform delete operation on the file with matching three
    fields .
    OMCID , NETYPE, NENAME (All three known )

    Could somebody try to answer the problem . or tel how to proceed

    Regards
    Aki
  • santosh

    #2
    Re: file deletion in a directory with some conditions .

    aki wrote:
    >
    Hi All,
    >
    I describe the problem as below.
    >
    A directory( path known) , contains 0 to any number of files .
    The file names are with following structure :
    >
    OMCID_NETYPE_NE NAME_NAMEOFTHEA PPLIEDFILE_APPL YDATE_trans.csv
    For example :
    >
    4_TC_TC_48_NoST Configuration_1 971-1-1_trans.csv
    >
    where
    OMCID =4
    NETYPE= TC
    NENAME= TC_48
    NAMEOFTHEAPPLIE DFILE=NoSTConfi guration
    APPLYDATE=1971-1-1
    >
    i have to perform delete operation on the file with matching three
    fields .
    OMCID , NETYPE, NENAME (All three known )
    >
    Could somebody try to answer the problem . or tel how to proceed
    Firstly C doesn't have *any* support for directories, so you may want to
    ask in a group for your system like comp.unix.progr ammer.

    Secondly, once you get a list of all the files in your directory, you
    need to match the OMCID, NETYPE, and NENAME fields of these names with
    your criteria. If you don't want to write code to do this, you can use
    a regular expression library, which is not a part of Standard C but is
    nevertheless included with most major implementations . This will
    relieve you of the tedium of writing the string comparison code and the
    possibilities of bugs, testing, etc. A further advantage is that using
    this method you can easily adapt your code to match any criteria with
    just a few simple changes. Custom code may need major additions and
    restructuring.

    Another possibility, if your program will be restricted to suitable
    systems, is to use the system's delete file command. The Unix command
    for this, 'rm' has built-in support for file globbing and pattern
    matching. For further details ask in a group for your system.

    In summary while this can be easily done in fully portable C (provided
    the list of file names is somehow gathered, since ISO C has no support
    for reading directories), a more robust solution would be to use a
    pattern matching library. If you are on a POSIX system investigate
    regex.h and glob.h.

    Comment

    • Ajay

      #3
      Re: file deletion in a directory with some conditions .

      On Jul 31, 6:10 am, santosh <santosh....@gm ail.comwrote:
      aki wrote:
      >
      Hi All,
      >
        I describe the problem as below.
      >
      A directory( path known) , contains  0 to any number of files .
      The file names are  with following structure :
      >
      OMCID_NETYPE_NE NAME_NAMEOFTHEA PPLIEDFILE_APPL YDATE_trans.csv
      For example :
      >
      4_TC_TC_48_NoST Configuration_1 971-1-1_trans.csv
      >
      where
       OMCID =4
      NETYPE= TC
      NENAME= TC_48
      NAMEOFTHEAPPLIE DFILE=NoSTConfi guration
      APPLYDATE=1971-1-1
      >
      i have to perform delete operation on the file with matching  three
      fields .
      OMCID , NETYPE, NENAME (All three known )
      >
      Could somebody try to answer the problem . or tel how to proceed
      >
      Firstly C doesn't have *any* support for directories, so you may want to
      ask in a group for your system like comp.unix.progr ammer.
      >
      Secondly, once you get a list of all the files in your directory, you
      need to match the OMCID, NETYPE, and NENAME fields of these names with
      your criteria. If you don't want to write code to do this, you can use
      a regular expression library, which is not a part of Standard C but is
      nevertheless included with most major implementations . This will
      relieve you of the tedium of writing the string comparison code and the
      possibilities of bugs, testing, etc. A further advantage is that using
      this method you can easily adapt your code to match any criteria with
      just a few simple changes. Custom code may need major additions and
      restructuring.
      >
      Another possibility, if your program will be restricted to suitable
      systems, is to use the system's delete file command. The Unix command
      for this, 'rm' has built-in support for file globbing and pattern
      matching. For further details ask in a group for your system.
      >
      In summary while this can be easily done in fully portable C (provided
      the list of file names is somehow gathered, since ISO C has no support
      for reading directories), a more robust solution would be to use a
      pattern matching library. If you are on a POSIX system investigate
      regex.h and glob.h.
      Adding to what Santosh told:
      If you are on a Linux box and use are using Libc4 or Libc5, you can
      use functions scandir() and alphasort()
      to obtain directory listing. you need to look for header files
      dirent.h

      I am not sure about its portability to other systems :(

      For more information,


      Comment

      • santosh

        #4
        Re: file deletion in a directory with some conditions .

        Ajay wrote:
        On Jul 31, 6:10 am, santosh <santosh....@gm ail.comwrote:
        >aki wrote:
        >>
        Hi All,
        >>
        I describe the problem as below.
        >>
        A directory( path known) , contains  0 to any number of files .
        The file names are  with following structure :
        >>
        OMCID_NETYPE_NE NAME_NAMEOFTHEA PPLIEDFILE_APPL YDATE_trans.csv
        For example :
        >>
        4_TC_TC_48_NoST Configuration_1 971-1-1_trans.csv
        >>
        where
        OMCID =4
        NETYPE= TC
        NENAME= TC_48
        NAMEOFTHEAPPLIE DFILE=NoSTConfi guration
        APPLYDATE=1971-1-1
        >>
        i have to perform delete operation on the file with matching  three
        fields .
        OMCID , NETYPE, NENAME (All three known )
        >>
        Could somebody try to answer the problem . or tel how to proceed
        [ ... ]
        Adding to what Santosh told:
        If you are on a Linux box and use are using Libc4 or Libc5, you can
        use functions scandir() and alphasort()
        to obtain directory listing. you need to look for header files
        dirent.h
        >
        I am not sure about its portability to other systems :(
        They are not very portable at all. They are also deprecated by at least
        one standard. A more portable solution is to use
        opendir/readdir/closedir along with the facilities defined in regex.h.
        All of these are standardised by POSIX and hence fairly portable.

        For further discussions of these functions the OP should consider
        posting on comp.unix.progr ammer, where there is a higher likelyhood of
        receiving better, more accurate, peer reviewed answers, as there are
        far more active Unix/POSIX experts there than here.

        <snip>

        Comment

        • Keith Thompson

          #5
          Re: file deletion in a directory with some conditions .

          santosh <santosh.k83@gm ail.comwrites:
          [...]
          Another possibility, if your program will be restricted to suitable
          systems, is to use the system's delete file command. The Unix command
          for this, 'rm' has built-in support for file globbing and pattern
          matching. For further details ask in a group for your system.
          [...]

          The remove() function is standard in ISO C.

          <OT>No, Unix 'rm' doesn't have built-in support for file globbing and
          pattern matching; that's handled by the shell.</OT>

          --
          Keith Thompson (The_Other_Keit h) kst-u@mib.org <http://www.ghoti.net/~kst>
          Nokia
          "We must do something. This is something. Therefore, we must do this."
          -- Antony Jay and Jonathan Lynn, "Yes Minister"

          Comment

          • Antoninus Twink

            #6
            Re: file deletion in a directory with some conditions .

            On 2 Aug 2008 at 23:32, Keith Thompson wrote:
            santosh <santosh.k83@gm ail.comwrites:
            >Another possibility, if your program will be restricted to suitable
            >systems, is to use the system's delete file command. The Unix command
            >for this, 'rm' has built-in support for file globbing and pattern
            >matching. For further details ask in a group for your system.
            >
            No, Unix 'rm' doesn't have built-in support for file globbing and
            pattern matching; that's handled by the shell.
            But system() goes via /bin/sh, so the effect is the same.

            If the user is using fork()/exec() directly, then again he can use
            /bin/sh -c to execute rm and get globbing.

            Comment

            • Keith Thompson

              #7
              Re: file deletion in a directory with some conditions .

              Antoninus Twink <nospam@nospam. invalidwrites:
              On 2 Aug 2008 at 23:32, Keith Thompson wrote:
              >santosh <santosh.k83@gm ail.comwrites:
              >>Another possibility, if your program will be restricted to suitable
              >>systems, is to use the system's delete file command. The Unix command
              >>for this, 'rm' has built-in support for file globbing and pattern
              >>matching. For further details ask in a group for your system.
              >>
              >No, Unix 'rm' doesn't have built-in support for file globbing and
              >pattern matching; that's handled by the shell.
              >
              [snip information more appropriate for a Unix group]

              I don't normally respond to AT, but in this case he has quoted me in a
              deliberately misleading manner. I had surrounded my remarks about the
              'rm' command with "<OT>" and "</OT"tags. AT deleted those tags,
              giving the false impression that I care as little about topicality as
              he does.

              --
              Keith Thompson (The_Other_Keit h) kst-u@mib.org <http://www.ghoti.net/~kst>
              Nokia
              "We must do something. This is something. Therefore, we must do this."
              -- Antony Jay and Jonathan Lynn, "Yes Minister"

              Comment

              • Kenny McCormack

                #8
                Re: file deletion in a directory with some conditions .

                In article <lnod49byv2.fsf @nuthaus.mib.or g>,
                Keith Thompson <kst-u@mib.orgwrote:
                >Antoninus Twink <nospam@nospam. invalidwrites:
                >On 2 Aug 2008 at 23:32, Keith Thompson wrote:
                >>santosh <santosh.k83@gm ail.comwrites:
                >>>Another possibility, if your program will be restricted to suitable
                >>>systems, is to use the system's delete file command. The Unix command
                >>>for this, 'rm' has built-in support for file globbing and pattern
                >>>matching. For further details ask in a group for your system.
                >>>
                >>No, Unix 'rm' doesn't have built-in support for file globbing and
                >>pattern matching; that's handled by the shell.
                >>
                >[snip information more appropriate for a Unix group]
                >
                >I don't normally respond to AT, but in this case he has quoted me in a
                >deliberately misleading manner. I had surrounded my remarks about the
                >'rm' command with "<OT>" and "</OT"tags. AT deleted those tags,
                >giving the false impression that I care as little about topicality as
                >he does.
                God almighty, we couldn't have that, now could we?

                Geez, what small lives you people live.

                Comment

                • Kenny McCormack

                  #9
                  Re: file deletion in a directory with some conditions .

                  In article <slrng9c0bd.l6f .nospam@nospam. invalid>,
                  Antoninus Twink <nospam@nospam. invalidwrote:
                  >On 2 Aug 2008 at 23:32, Keith Thompson wrote:
                  >santosh <santosh.k83@gm ail.comwrites:
                  >>Another possibility, if your program will be restricted to suitable
                  >>systems, is to use the system's delete file command. The Unix command
                  >>for this, 'rm' has built-in support for file globbing and pattern
                  >>matching. For further details ask in a group for your system.
                  >>
                  >No, Unix 'rm' doesn't have built-in support for file globbing and
                  >pattern matching; that's handled by the shell.
                  >
                  >But system() goes via /bin/sh, so the effect is the same.
                  >
                  >If the user is using fork()/exec() directly, then again he can use
                  >/bin/sh -c to execute rm and get globbing.
                  Off topic. Not portable. Cant discuss it here. Blah, blah, blah.

                  As far as the standard is concerned, system() could go via /keith/is/god.

                  Comment

                  Working...