I don't want my ls command in my script to print results on screen

Your script will print each of the commands in your pipeline to the terminal because you are running it with the -x flag. Fromman bash:

   -x        Print commands and their arguments as they are executed.

However, your approach using ls and wc is not the best way to count files.


To find file that is >= 20000 you can use find:

find -type f -maxdepth 1 -name 'umbrella31_*log' -size +19999c -ls

(because of how find interpreters + sign (greater than rounded up) you get n+1, therefore the odd
-size n)

count output:
(when we count files we just print a newline because we dont really need an output)

wc -l < <(find -maxdepth 1 -type f -name 'umbrella31_*log' -size +19999c -printf \\n)

-maxdepth n
  Descend at most levels (a non-negative integer) levels of directories below the starting-points.
-size n
  File uses n units of space, rounding up.
-ls
  List current file in ls -dils format on standard output.


Updated Answer

After posting script used in the question it was discovered:

#!/bin/bash -x

was used where the -x option outputs all commands to the terminal.

Removing the -x solved the original problem.


Original Answer

You're missing the argument flag indicator so this:

ls lX umbrella31_*log |  awk '{if($5 >=20000) {print}}' | wc -l

should be this instead:

ls -lX umbrella31_*log |  awk '{if($5 >=20000) {print}}' | wc -l

On my system looking for bash scripts it works like so:

$ ls -lX *.sh
-rwxrwxr-x 1 rick rick 4183 Jul  1 10:48 aptfileparse.sh
-rwxrwxr-x 1 rick rick  339 Jul 24 17:26 checkrunning.sh
-rwxrwxr-x 1 rick rick  506 Jul 15 17:54 Downloads.sh
-rwxrwxr-x 1 rick rick   78 Jul  6 11:28 runall.sh

$ ls -lX *.sh | awk '{if($5 >=200) {print}}' | wc -l
3