TL;DW

# find with grep
# + concatinates results and runs the command once, faster
find . -name "*.txt" -exec grep -l "somename" '{}' '+'

# run a command for each result individually
find . -name "*.txt" -exec basename '{}' \';' |  column

# case insensitive
find -iname "SoMeNaMe.TxT

# file or dir
find -type f
find -type d

# define file owner
find -user Bob

# define file group
find -group wheel

# by permission
find -perm 777

# find by size
find -size +1G
  • @vvv@programming.dev
    link
    fedilink
    577 months ago

    grep -r exists and is even more faster and doesn’t require passing around file names.

    grep -r --include='*.txt' 'somename' .
    
    • fmstrat
      link
      fedilink
      3
      edit-2
      7 months ago

      Or use strings if you want clean binary results. (Grep can probably do this, too)

      Edit: Yes, with -b, also -R follows symlinks unlike -r

  • Twitches
    link
    fedilink
    217 months ago

    Better than the video thank you, I didn’t watch the video

  • @qjkxbmwvz@startrek.website
    link
    fedilink
    117 months ago

    I kinda prefer xargs to the -exec option — just feels more UNIXy to me (do one one job well).

    But as another comment said, for grep I just use -r and --include. So clearly I’m not very consistent…

    • boredsquirrelOP
      link
      fedilink
      27 months ago

      It is important to have backups for when Youtube blocks clients, but I just watch it over a VPN and Freetube or Grayjay. Not leeching any resources when avoidable, just costing big brother money.

      • Fonzie!
        link
        fedilink
        17 months ago

        You’re giving all your data to your VPN company, though

          • Fonzie!
            link
            fedilink
            17 months ago

            And give no personal information? Like Mullvad? That is an improvement.

            • boredsquirrelOP
              link
              fedilink
              1
              edit-2
              7 months ago

              Yup. Also their VPN app on Linux is better than what KDE and GNOME have. Poorly. They hook into it very intensely, early boot blocking via a systemd service and all.

  • @toastal@lemmy.ml
    link
    fedilink
    67 months ago

    She’s done such a good job with this channel. I understand most of the content, but I always pick up a nugget of new as well as being able to better explain after a topic she ELI5’d

  • unalivejoy
    link
    fedilink
    English
    6
    edit-2
    7 months ago

    If you have a very large directory, find will check each individual file, even when -path doesn’t match, which makes it take longer to complete. Combine -o and -prune to omit them entirely.

    find . -path '**/node_modules/**' -prune -o -type f -name '*.js' -exec grep 'import' {} +
    
  • Dave
    link
    fedilink
    57 months ago

    Forgive me for only TLDW and not watching, but was ack mentioned?

    I’ve never looked back.

  • @dohpaz42@lemmy.world
    link
    fedilink
    English
    47 months ago

    When using both {} and ;, it’s safer to use single quotes to escape the current argument and ending delimiter; eg {} and ;’, respectively.