I was just trying the below code and it is not working.. please suggest to correct this code..

echo abc.txt | while read name; do find . -name $name; done 

output success : ./rak/abc.txt

echo 'abc.txt pqr.txt' | while read name; do find . -name $name; done 

output error : find: 0652-009 There is a missing conjunction

echo "abc.txt pqr.txt" | while read name; do find . -name $name; done 

output error : find: 0652-009 There is a missing conjunction

same error with

echo "abc.txt" "pqr.txt" | while read name; do find . -name $name; done echo 'abc.txt' 'pqr.txt' | while read name; do find . -name $name; done 

Please suggest how to resolve this problem...

1 Answer

The problem is that the multiple entries are sent into the pipe as one line, the read picks up both strings into name and then processes the $name containing the two strings.

You should use something like:

echo -e "abc.txt\npqr.txt" | while read name; do find . -name $name; done 

i.e. separate the items with a newline.

You should have tried debugging this by using echo "'$name'" instead of the find and it would have hinted what was happening.

Additionally, I would use quoting around the use of $name in the find, as if the filename is expected to have a space in it's name then you will get the same error message as you have experienced originally.

1

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.