Hi,
I figured it out myself (from some stackoverflow "FILE_BASENAME"-post)
(but was gaming and didn't come to the `column` part yet), but thanks
for `parallel` and reply :)

func() {
    FILENAME=$1
#    FILE_BASENAME=`echo ${FILENAME##*/}`
#    echo $FILE_BASENAME
    URL=$(ffprobe -hide_banner "$FILENAME" 2>&1| grep -i 'http\|www')
    if [ "$URL" != "" ]; then
        echo -e "$FILENAME\t$URL"
    fi
}
export -f func
#time parallel func :::: ~/filelist|wc -l
time find . -type f -iname "*.flac" -print0|parallel -0 func

Initially I didn't like to see a function and additional export line,
but I'm fine with it now as it tidies things up and helps understanding.

On 12.11.22 um 16:53 Ole Tange wrote:
On Sat, Nov 12, 2022 at 2:55 PM D <[email protected]> wrote:
Hello,

I'm trying to parallelize my Bash shell script:

find . -type f -iname "*.flac" -print0 | while read -d $'\0' FILENAME; do
      INFOS=$(ffprobe -hide_banner "$FILENAME" 2>&1)
      URL=$("$INFOS"|& grep -i 'http\|www')
      if [ "$URL" != "" ]; then
          echo -e "$FILENAME\t$URL"
      fi
done | column -t -s $'\t'
doit() {
    FILENAME="$1"
    INFOS=$(ffprobe -hide_banner "$FILENAME" 2>&1)
    URL=$("$INFOS"|& grep -i 'http\|www')
    if [ "$URL" != "" ]; then
        echo -e "$FILENAME\t$URL"
    fi
}
export -f doit
find . -type f -iname "*.flac" -print0 | parallel doit |
    column -t -s $'\t'

I think you have misunderstood how GNU Parallel works.

You should spend 20 minutes reading chapter 1+2:
https://doi.org/10.5281/zenodo.1146014 (Print:
https://www.lulu.com/shop/ole-tange/gnu-parallel-2018/paperback/product-23558902.html)

/Ole


Reply via email to