On Thu, Feb 27, 2020 at 04:46:08PM +0100, Albretch Mueller wrote: > > We can't really "see what you mean" until you show us. Why don't you > > just tell us the actual problem? It can't be THAT embarrassing. > > OK, here it is again. You will see that as part of the output you > will see a bunch of paths (with the actual matches) that someone were > not picked by the -printf statement. > > # extensions > _X=".\(java\|txt\)" > > # search directory > _SDIR="/home/$(whoami)/java" > > # search string > _W="java.io.UnsupportedEncodingException;" > > ### > _DT=$(date +%Y%m%d%H%M%S) > > _LOG_FL=$(basename "${_SDIR}")"_find_${_DT}.log" > echo "// __ \$_LOG_FL: |${_LOG_FL}|" > > find "${_SDIR}" -type f -iregex .*"${_X}" -printf '"%TD > %TT",%Ts,%s,"%P"\n' -exec grep --files-with-matches "${_W}" {} \; > > "${_LOG_FL}" 2>&1 > > cat "${_LOG_FL}" | grep -e "^${_SDIR}"
What part of "tell us the actual problem" did you not understand? Oh, wait. I already know the answer to that one: all of it. :( Do you want to search for all files in ~/java whose names end with .java or .txt and which contain the string "java.io.UnsupportedEncodingException;" ? Why is it so hard to write three lines of text that explain what you are trying to do? Why do you think that dozens of lines of cryptic shell code are a valid substitute for that? Anyway, here's one answer to what I *think* you are trying to achieve: find ~/java -type f \( -iname '*.java' -o -iname '*.txt' \) \ -exec grep -l -F 'java.io.UnsupportedEncodingException;' {} + That is the entire command. Slap a #!/bin/sh above it and it is the entire script. At this point, decades of experience tell me that you will change the question. "No, that isn't what I wanted at all! Isn't it OBVIOUS from my non-working obfuscated shell code?!" I try and try and try to avoid that part, by asking you to tell us the goal up front, in simple English, but I just can't seem to make that happen.