Bash: Native way to check if an entry is one line?

bash, find, wc

Solution

Well, given that you are storing these results in the file $temp this is a little easier:

[ "$( wc -l < $temp )" -eq 1 ] && edit "$( cat $temp )"

Instead of 'cat $temp' you can do '< $temp', but it might take away some readability if you are not very familiar with redirection 8)

Problem

I have a find script that automatically opens a file if just one file is found. The way I currently handle it is doing a word count on the number of lines of the search results. Is there an easier way to do this? ``` if [ "$( cat "$temp" | wc -l | xargs echo )" == "1" ]; then edit `cat "$temp"` fi ``` EDITED - here is the context of the whole script. ``` term="$1" temp=".aafind.txt" find src sql common -iname "*$term*" | grep -v 'src/.*lib' >> "$temp" if [ ! -s "$temp" ]; then echo "ø - including lib..." 1>&2 find src sql common -iname "*$term*" >> "$temp" fi if [ "$( cat "$temp" | wc -l | xargs echo )" == "1" ]; then # just open it in an editor edit `cat "$temp"` else # format output term_regex=`echo "$term" | sed "s%\*%[^/]*%g" | sed "s%\?%[^/]%g" ` cat "$temp" | sed -E 's%//+%/%' | grep --color -E -i "$term_regex|$" fi rm "$temp" ```

Original source