How to compare two files and if found equal ask the user to delete duplicate file by using shell script?

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP











up vote
0
down vote

favorite












I am learning linux and was given this problem as my homework but i can't solve this that how we can compare two files content in shell mode.
(Here, we can assume that both files having text content like this
for eg.
$cat > f1
this is file 1)



$ cat duplicate_file.sh
echo "Enter file 1:"
read file1
echo "Enter file 2:"
read file2
cmp $file1 $file2 > newfile
x=` wc newfile | cut -d" " -f2 `
if [` $x -eq 0 `]
then
rm -i $file2
fi


I made this program but this ain't working!! So, Any suggestions??










share|improve this question







New contributor




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























    up vote
    0
    down vote

    favorite












    I am learning linux and was given this problem as my homework but i can't solve this that how we can compare two files content in shell mode.
    (Here, we can assume that both files having text content like this
    for eg.
    $cat > f1
    this is file 1)



    $ cat duplicate_file.sh
    echo "Enter file 1:"
    read file1
    echo "Enter file 2:"
    read file2
    cmp $file1 $file2 > newfile
    x=` wc newfile | cut -d" " -f2 `
    if [` $x -eq 0 `]
    then
    rm -i $file2
    fi


    I made this program but this ain't working!! So, Any suggestions??










    share|improve this question







    New contributor




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





















      up vote
      0
      down vote

      favorite









      up vote
      0
      down vote

      favorite











      I am learning linux and was given this problem as my homework but i can't solve this that how we can compare two files content in shell mode.
      (Here, we can assume that both files having text content like this
      for eg.
      $cat > f1
      this is file 1)



      $ cat duplicate_file.sh
      echo "Enter file 1:"
      read file1
      echo "Enter file 2:"
      read file2
      cmp $file1 $file2 > newfile
      x=` wc newfile | cut -d" " -f2 `
      if [` $x -eq 0 `]
      then
      rm -i $file2
      fi


      I made this program but this ain't working!! So, Any suggestions??










      share|improve this question







      New contributor




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











      I am learning linux and was given this problem as my homework but i can't solve this that how we can compare two files content in shell mode.
      (Here, we can assume that both files having text content like this
      for eg.
      $cat > f1
      this is file 1)



      $ cat duplicate_file.sh
      echo "Enter file 1:"
      read file1
      echo "Enter file 2:"
      read file2
      cmp $file1 $file2 > newfile
      x=` wc newfile | cut -d" " -f2 `
      if [` $x -eq 0 `]
      then
      rm -i $file2
      fi


      I made this program but this ain't working!! So, Any suggestions??







      shell-script files






      share|improve this question







      New contributor




      Hariom kushwaha 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 question







      New contributor




      Hariom kushwaha 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 question




      share|improve this question






      New contributor




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









      asked 1 hour ago









      Hariom kushwaha

      1




      1




      New contributor




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





      New contributor





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






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




















          2 Answers
          2






          active

          oldest

          votes

















          up vote
          0
          down vote













          There are many ways to solve this, but I'll go with what you've started.



          First, don't forget the lead off the script with the interpreter string ("shebang"):



          #!/bin/bash

          echo "Enter file 1:"
          read file1
          echo "Enter file 2:"
          read file2
          cmp $file1 $file2 > newfile


          At this point you could test a couple of things:



          1. if newfile is not empty the files differ


          if [ ! -s newfile ]; then
          rm -i $file2
          fi



          1. Test the exit code for cmp operation. If it is 0, the files match.


          if [ `echo $?` == 0 ]; then
          rm -i $file2
          fi



          Also, your wc command isn't quite working. Try running it outside of the script. Do you get the result you're expecting?






          share|improve this answer



























            up vote
            0
            down vote













            First include shebang #! at the top like #!/bin/bash



            You are having two errors:



            Instead of



            cmp $file1 $file2 > newfile,


            it should be



            cmp "$file1" "$file2" > newfile


            as these values of these variables may have spaces between them.



            Second error:



            Instead of



            if [` $x -eq 0 `]


            it should be if [ "$x" -eq 0 ].



            Also if you are having spaces in the file names then it should be:



            rm -i "$file2" otherwise it can delete multiple files.





            share




















              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',
              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
              );



              );






              Hariom kushwaha is a new contributor. Be nice, and check out our Code of Conduct.









               

              draft saved


              draft discarded


















              StackExchange.ready(
              function ()
              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f480903%2fhow-to-compare-two-files-and-if-found-equal-ask-the-user-to-delete-duplicate-fil%23new-answer', 'question_page');

              );

              Post as a guest






























              2 Answers
              2






              active

              oldest

              votes








              2 Answers
              2






              active

              oldest

              votes









              active

              oldest

              votes






              active

              oldest

              votes








              up vote
              0
              down vote













              There are many ways to solve this, but I'll go with what you've started.



              First, don't forget the lead off the script with the interpreter string ("shebang"):



              #!/bin/bash

              echo "Enter file 1:"
              read file1
              echo "Enter file 2:"
              read file2
              cmp $file1 $file2 > newfile


              At this point you could test a couple of things:



              1. if newfile is not empty the files differ


              if [ ! -s newfile ]; then
              rm -i $file2
              fi



              1. Test the exit code for cmp operation. If it is 0, the files match.


              if [ `echo $?` == 0 ]; then
              rm -i $file2
              fi



              Also, your wc command isn't quite working. Try running it outside of the script. Do you get the result you're expecting?






              share|improve this answer
























                up vote
                0
                down vote













                There are many ways to solve this, but I'll go with what you've started.



                First, don't forget the lead off the script with the interpreter string ("shebang"):



                #!/bin/bash

                echo "Enter file 1:"
                read file1
                echo "Enter file 2:"
                read file2
                cmp $file1 $file2 > newfile


                At this point you could test a couple of things:



                1. if newfile is not empty the files differ


                if [ ! -s newfile ]; then
                rm -i $file2
                fi



                1. Test the exit code for cmp operation. If it is 0, the files match.


                if [ `echo $?` == 0 ]; then
                rm -i $file2
                fi



                Also, your wc command isn't quite working. Try running it outside of the script. Do you get the result you're expecting?






                share|improve this answer






















                  up vote
                  0
                  down vote










                  up vote
                  0
                  down vote









                  There are many ways to solve this, but I'll go with what you've started.



                  First, don't forget the lead off the script with the interpreter string ("shebang"):



                  #!/bin/bash

                  echo "Enter file 1:"
                  read file1
                  echo "Enter file 2:"
                  read file2
                  cmp $file1 $file2 > newfile


                  At this point you could test a couple of things:



                  1. if newfile is not empty the files differ


                  if [ ! -s newfile ]; then
                  rm -i $file2
                  fi



                  1. Test the exit code for cmp operation. If it is 0, the files match.


                  if [ `echo $?` == 0 ]; then
                  rm -i $file2
                  fi



                  Also, your wc command isn't quite working. Try running it outside of the script. Do you get the result you're expecting?






                  share|improve this answer












                  There are many ways to solve this, but I'll go with what you've started.



                  First, don't forget the lead off the script with the interpreter string ("shebang"):



                  #!/bin/bash

                  echo "Enter file 1:"
                  read file1
                  echo "Enter file 2:"
                  read file2
                  cmp $file1 $file2 > newfile


                  At this point you could test a couple of things:



                  1. if newfile is not empty the files differ


                  if [ ! -s newfile ]; then
                  rm -i $file2
                  fi



                  1. Test the exit code for cmp operation. If it is 0, the files match.


                  if [ `echo $?` == 0 ]; then
                  rm -i $file2
                  fi



                  Also, your wc command isn't quite working. Try running it outside of the script. Do you get the result you're expecting?







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered 10 mins ago









                  kevlinux

                  1442




                  1442






















                      up vote
                      0
                      down vote













                      First include shebang #! at the top like #!/bin/bash



                      You are having two errors:



                      Instead of



                      cmp $file1 $file2 > newfile,


                      it should be



                      cmp "$file1" "$file2" > newfile


                      as these values of these variables may have spaces between them.



                      Second error:



                      Instead of



                      if [` $x -eq 0 `]


                      it should be if [ "$x" -eq 0 ].



                      Also if you are having spaces in the file names then it should be:



                      rm -i "$file2" otherwise it can delete multiple files.





                      share
























                        up vote
                        0
                        down vote













                        First include shebang #! at the top like #!/bin/bash



                        You are having two errors:



                        Instead of



                        cmp $file1 $file2 > newfile,


                        it should be



                        cmp "$file1" "$file2" > newfile


                        as these values of these variables may have spaces between them.



                        Second error:



                        Instead of



                        if [` $x -eq 0 `]


                        it should be if [ "$x" -eq 0 ].



                        Also if you are having spaces in the file names then it should be:



                        rm -i "$file2" otherwise it can delete multiple files.





                        share






















                          up vote
                          0
                          down vote










                          up vote
                          0
                          down vote









                          First include shebang #! at the top like #!/bin/bash



                          You are having two errors:



                          Instead of



                          cmp $file1 $file2 > newfile,


                          it should be



                          cmp "$file1" "$file2" > newfile


                          as these values of these variables may have spaces between them.



                          Second error:



                          Instead of



                          if [` $x -eq 0 `]


                          it should be if [ "$x" -eq 0 ].



                          Also if you are having spaces in the file names then it should be:



                          rm -i "$file2" otherwise it can delete multiple files.





                          share












                          First include shebang #! at the top like #!/bin/bash



                          You are having two errors:



                          Instead of



                          cmp $file1 $file2 > newfile,


                          it should be



                          cmp "$file1" "$file2" > newfile


                          as these values of these variables may have spaces between them.



                          Second error:



                          Instead of



                          if [` $x -eq 0 `]


                          it should be if [ "$x" -eq 0 ].



                          Also if you are having spaces in the file names then it should be:



                          rm -i "$file2" otherwise it can delete multiple files.






                          share











                          share


                          share










                          answered 2 mins ago









                          Debian_yadav

                          9403922




                          9403922




















                              Hariom kushwaha is a new contributor. Be nice, and check out our Code of Conduct.









                               

                              draft saved


                              draft discarded


















                              Hariom kushwaha is a new contributor. Be nice, and check out our Code of Conduct.












                              Hariom kushwaha is a new contributor. Be nice, and check out our Code of Conduct.











                              Hariom kushwaha is a new contributor. Be nice, and check out our Code of Conduct.













                               


                              draft saved


                              draft discarded














                              StackExchange.ready(
                              function ()
                              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f480903%2fhow-to-compare-two-files-and-if-found-equal-ask-the-user-to-delete-duplicate-fil%23new-answer', 'question_page');

                              );

                              Post as a guest













































































                              Popular posts from this blog

                              How to check contact read email or not when send email to Individual?

                              Bahrain

                              Postfix configuration issue with fips on centos 7; mailgun relay