How to compare two files and if found equal ask the user to delete duplicate file by using shell script?
Clash 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??
shell-script files
New contributor
add a comment |
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??
shell-script files
New contributor
add a comment |
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??
shell-script files
New contributor
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
shell-script files
New contributor
New contributor
New contributor
asked 1 hour ago
Hariom kushwaha
1
1
New contributor
New contributor
add a comment |
add a comment |
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:
- if newfile is not empty the files differ
if [ ! -s newfile ]; then
rm -i $file2
fi
- 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?
add a comment |
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.
add a comment |
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:
- if newfile is not empty the files differ
if [ ! -s newfile ]; then
rm -i $file2
fi
- 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?
add a comment |
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:
- if newfile is not empty the files differ
if [ ! -s newfile ]; then
rm -i $file2
fi
- 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?
add a comment |
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:
- if newfile is not empty the files differ
if [ ! -s newfile ]; then
rm -i $file2
fi
- 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?
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:
- if newfile is not empty the files differ
if [ ! -s newfile ]; then
rm -i $file2
fi
- 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?
answered 10 mins ago
kevlinux
1442
1442
add a comment |
add a comment |
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.
add a comment |
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.
add a comment |
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.
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.
answered 2 mins ago
Debian_yadav
9403922
9403922
add a comment |
add a comment |
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.
Hariom kushwaha is a new contributor. Be nice, and check out our Code of Conduct.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
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
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password