Hi friends! 🤓 I am on a gnulinux and trying to list all files in the active directory and it’s subdirectories. I then want to pipe the output to “cat”. I want to pipe the output from cat into grep.

Please help! 😅

  • Shadow@lemmy.ca
    link
    fedilink
    arrow-up
    0
    ·
    10 months ago

    To answer your og question since it is a valuable tool to know about, xargs.

    ls | xargs cat | grep print

    Should do what you want. Unless your file names have spaces, then you should probably not use this.

    • 018118055@sopuli.xyz
      link
      fedilink
      arrow-up
      0
      ·
      edit-2
      10 months ago

      find -print0 | xargs -0 can handle spaces

      Edit and you probably want xargs --exec instead of piping after

  • Björn Tantau@swg-empire.de
    link
    fedilink
    arrow-up
    0
    ·
    10 months ago

    Note, you almost never have to use cat. Just leaving it out would have been enough to find your file (although find is still better).

    When you want to find a string in a file it’s also enough to use grep string file instead of cat file | grep string. You can even search through multiple files with grep string file1 file2 file* and grep will tell you in which file the string was found.