<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Cameroon Reeves</title>
    <description>The latest articles on DEV Community by Cameroon Reeves (@cameroonreevesdev).</description>
    <link>https://dev.to/cameroonreevesdev</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3916023%2F371bd976-9946-44c5-a7df-a53671d6186a.jpg</url>
      <title>DEV Community: Cameroon Reeves</title>
      <link>https://dev.to/cameroonreevesdev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/cameroonreevesdev"/>
    <language>en</language>
    <item>
      <title>find Command Cheat Sheet — All Flags &amp; Usage Examples</title>
      <dc:creator>Cameroon Reeves</dc:creator>
      <pubDate>Wed, 06 May 2026 12:55:53 +0000</pubDate>
      <link>https://dev.to/cameroonreevesdev/find-command-cheat-sheet-all-flags-usage-examples-5f32</link>
      <guid>https://dev.to/cameroonreevesdev/find-command-cheat-sheet-all-flags-usage-examples-5f32</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://www.commandinline.com/find-command-cheat-sheet/" rel="noopener noreferrer"&gt;commandinline.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;The &lt;code&gt;find&lt;/code&gt; command searches a directory tree by name, type, time, size, permissions, or any combination — and runs an action on every match.&lt;/strong&gt; It is the most powerful filesystem tool on Linux, and the one that rewards memorizing a few core flags. This sheet maps the flags to real tasks and pairs with &lt;a href="https://www.commandinline.com/locate-command-cheat-sheet/" rel="noopener noreferrer"&gt;locate for fast database queries&lt;/a&gt; and &lt;a href="https://www.commandinline.com/find-exec-linux-command-guide/" rel="noopener noreferrer"&gt;find -exec deep dive&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick Reference
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;find&lt;/code&gt; takes a path, a series of expressions (filters), and optionally an action. The default action is &lt;code&gt;-print&lt;/code&gt;. Expressions combine with implicit AND; use &lt;code&gt;-o&lt;/code&gt; for OR and &lt;code&gt;!&lt;/code&gt; or &lt;code&gt;-not&lt;/code&gt; for negation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Syntax &amp;amp; Common Options
&lt;/h2&gt;

&lt;p&gt;Form: &lt;code&gt;find [PATH...] [EXPRESSION]&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-name&lt;/span&gt; &lt;span class="s1"&gt;'*.log'&lt;/span&gt;                   &lt;span class="c"&gt;# by name&lt;/span&gt;
find /etc &lt;span class="nt"&gt;-type&lt;/span&gt; f                      &lt;span class="c"&gt;# files only&lt;/span&gt;
find / &lt;span class="nt"&gt;-type&lt;/span&gt; d &lt;span class="nt"&gt;-name&lt;/span&gt; nginx             &lt;span class="c"&gt;# directories named nginx&lt;/span&gt;
find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-mtime&lt;/span&gt; &lt;span class="nt"&gt;-1&lt;/span&gt;                       &lt;span class="c"&gt;# modified in the last 24h&lt;/span&gt;
find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-size&lt;/span&gt; +100M                     &lt;span class="c"&gt;# bigger than 100 MB&lt;/span&gt;
find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-perm&lt;/span&gt; /u+w                      &lt;span class="c"&gt;# any user-write set&lt;/span&gt;
find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-name&lt;/span&gt; &lt;span class="s1"&gt;'*.tmp'&lt;/span&gt; &lt;span class="nt"&gt;-delete&lt;/span&gt;           &lt;span class="c"&gt;# deletion action&lt;/span&gt;
find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-type&lt;/span&gt; f &lt;span class="nt"&gt;-exec&lt;/span&gt; &lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-l&lt;/span&gt; &lt;span class="o"&gt;{}&lt;/span&gt; +        &lt;span class="c"&gt;# batched exec&lt;/span&gt;
find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-name&lt;/span&gt; node_modules &lt;span class="nt"&gt;-prune&lt;/span&gt;       &lt;span class="c"&gt;# do not descend into node_modules&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Syntax
&lt;/h2&gt;

&lt;p&gt;Path first, then expressions. Expressions before &lt;code&gt;-name&lt;/code&gt; are options (e.g., &lt;code&gt;-maxdepth&lt;/code&gt;); after are tests and actions.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-maxdepth&lt;/span&gt; 2 &lt;span class="nt"&gt;-type&lt;/span&gt; f &lt;span class="nt"&gt;-name&lt;/span&gt; &lt;span class="s1"&gt;'*.py'&lt;/span&gt;
find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="se"&gt;\(&lt;/span&gt; &lt;span class="nt"&gt;-name&lt;/span&gt; &lt;span class="s1"&gt;'*.log'&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; &lt;span class="nt"&gt;-name&lt;/span&gt; &lt;span class="s1"&gt;'*.tmp'&lt;/span&gt; &lt;span class="se"&gt;\)&lt;/span&gt; &lt;span class="nt"&gt;-delete&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Quick Reference Table
&lt;/h2&gt;

&lt;p&gt;The most-used tests and actions.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Tests:
&lt;span class="nt"&gt;-name&lt;/span&gt; PATTERN        glob match &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;case&lt;/span&gt; sensitive&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nt"&gt;-iname&lt;/span&gt;               &lt;span class="k"&gt;case&lt;/span&gt;&lt;span class="nt"&gt;-insensitive&lt;/span&gt;
&lt;span class="nt"&gt;-type&lt;/span&gt; f|d|l|c|b|p|s  file &lt;span class="nb"&gt;type&lt;/span&gt;
&lt;span class="nt"&gt;-size&lt;/span&gt; +N|-N c|k|M|G  size &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;c&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;bytes, &lt;span class="nv"&gt;M&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;MiB&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nt"&gt;-mtime&lt;/span&gt; ±N            modified N&lt;span class="k"&gt;*&lt;/span&gt;24h ago &lt;span class="o"&gt;(&lt;/span&gt;- newer, + older&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nt"&gt;-mmin&lt;/span&gt; ±N             minutes
&lt;span class="nt"&gt;-newer&lt;/span&gt; FILE          modified more recently than FILE
&lt;span class="nt"&gt;-perm&lt;/span&gt; /MODE          any of these mode bits &lt;span class="nb"&gt;set&lt;/span&gt;
&lt;span class="nt"&gt;-perm&lt;/span&gt; &lt;span class="nt"&gt;-MODE&lt;/span&gt;          all of these mode bits &lt;span class="nb"&gt;set&lt;/span&gt;
&lt;span class="nt"&gt;-user&lt;/span&gt; NAME           by owner
&lt;span class="nt"&gt;-group&lt;/span&gt; NAME          by group
&lt;span class="nt"&gt;-empty&lt;/span&gt;               empty file or &lt;span class="nb"&gt;dir&lt;/span&gt;
&lt;span class="nt"&gt;-path&lt;/span&gt; PATTERN        match full path

Actions:
&lt;span class="nt"&gt;-print&lt;/span&gt;               default&lt;span class="p"&gt;;&lt;/span&gt; print path
&lt;span class="nt"&gt;-print0&lt;/span&gt;              NUL-separated &lt;span class="k"&gt;for &lt;/span&gt;xargs &lt;span class="nt"&gt;-0&lt;/span&gt;
&lt;span class="nt"&gt;-delete&lt;/span&gt;              remove matched files
&lt;span class="nt"&gt;-exec&lt;/span&gt; cmd &lt;span class="o"&gt;{}&lt;/span&gt; &lt;span class="se"&gt;\;&lt;/span&gt;      one cmd per match &lt;span class="o"&gt;(&lt;/span&gt;slow&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nt"&gt;-exec&lt;/span&gt; cmd &lt;span class="o"&gt;{}&lt;/span&gt; +       batched &lt;span class="o"&gt;(&lt;/span&gt;fast&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nt"&gt;-prune&lt;/span&gt;               &lt;span class="k"&gt;do &lt;/span&gt;not descend into matched directory
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Common Flags
&lt;/h2&gt;

&lt;p&gt;Two patterns dominate: filter by name+type, then act with &lt;code&gt;-exec ... +&lt;/code&gt; or &lt;code&gt;-delete&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Delete logs older than 14 days&lt;/span&gt;
find /var/log &lt;span class="nt"&gt;-type&lt;/span&gt; f &lt;span class="nt"&gt;-name&lt;/span&gt; &lt;span class="s1"&gt;'*.log'&lt;/span&gt; &lt;span class="nt"&gt;-mtime&lt;/span&gt; +14 &lt;span class="nt"&gt;-delete&lt;/span&gt;

&lt;span class="c"&gt;# Run a command on each match (batched is much faster)&lt;/span&gt;
find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-name&lt;/span&gt; &lt;span class="s1"&gt;'*.py'&lt;/span&gt; &lt;span class="nt"&gt;-exec&lt;/span&gt; &lt;span class="nb"&gt;wc&lt;/span&gt; &lt;span class="nt"&gt;-l&lt;/span&gt; &lt;span class="o"&gt;{}&lt;/span&gt; +
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Practical Examples
&lt;/h2&gt;

&lt;p&gt;Real-world hunts.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Files modified in the last hour&lt;/span&gt;
find /var/log &lt;span class="nt"&gt;-mmin&lt;/span&gt; &lt;span class="nt"&gt;-60&lt;/span&gt;

&lt;span class="c"&gt;# All world-writable files (security audit)&lt;/span&gt;
find / &lt;span class="nt"&gt;-xdev&lt;/span&gt; &lt;span class="nt"&gt;-type&lt;/span&gt; f &lt;span class="nt"&gt;-perm&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt;+w 2&amp;gt;/dev/null

&lt;span class="c"&gt;# Empty directories&lt;/span&gt;
find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-type&lt;/span&gt; d &lt;span class="nt"&gt;-empty&lt;/span&gt;

&lt;span class="c"&gt;# Find and grep (NUL-safe)&lt;/span&gt;
find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-type&lt;/span&gt; f &lt;span class="nt"&gt;-name&lt;/span&gt; &lt;span class="s1"&gt;'*.conf'&lt;/span&gt; &lt;span class="nt"&gt;-print0&lt;/span&gt; | xargs &lt;span class="nt"&gt;-0&lt;/span&gt; &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-l&lt;/span&gt; TLS

&lt;span class="c"&gt;# Skip noisy directories&lt;/span&gt;
find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="se"&gt;\(&lt;/span&gt; &lt;span class="nt"&gt;-name&lt;/span&gt; node_modules &lt;span class="nt"&gt;-o&lt;/span&gt; &lt;span class="nt"&gt;-name&lt;/span&gt; .git &lt;span class="se"&gt;\)&lt;/span&gt; &lt;span class="nt"&gt;-prune&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; &lt;span class="nt"&gt;-type&lt;/span&gt; f &lt;span class="nt"&gt;-name&lt;/span&gt; &lt;span class="s1"&gt;'*.js'&lt;/span&gt; &lt;span class="nt"&gt;-print&lt;/span&gt;

&lt;span class="c"&gt;# Files larger than 1 GB&lt;/span&gt;
find / &lt;span class="nt"&gt;-xdev&lt;/span&gt; &lt;span class="nt"&gt;-type&lt;/span&gt; f &lt;span class="nt"&gt;-size&lt;/span&gt; +1G 2&amp;gt;/dev/null

&lt;span class="c"&gt;# Files newer than another (rebuild trigger)&lt;/span&gt;
find src &lt;span class="nt"&gt;-newer&lt;/span&gt; build/.last &lt;span class="nt"&gt;-type&lt;/span&gt; f
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Tips and Tricks
&lt;/h2&gt;

&lt;p&gt;Patterns from production scripts.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Stay on one filesystem (do not cross mount points)&lt;/span&gt;
find / &lt;span class="nt"&gt;-xdev&lt;/span&gt; ...

&lt;span class="c"&gt;# NUL-safe pipeline&lt;/span&gt;
find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-type&lt;/span&gt; f &lt;span class="nt"&gt;-print0&lt;/span&gt; | xargs &lt;span class="nt"&gt;-0&lt;/span&gt; &lt;span class="nb"&gt;sha256sum&lt;/span&gt;

&lt;span class="c"&gt;# Group expressions with escaped parens&lt;/span&gt;
find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="se"&gt;\(&lt;/span&gt; &lt;span class="nt"&gt;-name&lt;/span&gt; &lt;span class="s1"&gt;'*.bak'&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; &lt;span class="nt"&gt;-name&lt;/span&gt; &lt;span class="s1"&gt;'*.tmp'&lt;/span&gt; &lt;span class="se"&gt;\)&lt;/span&gt; &lt;span class="nt"&gt;-delete&lt;/span&gt;

&lt;span class="c"&gt;# Time precision: use -newermt for human dates&lt;/span&gt;
find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-newermt&lt;/span&gt; &lt;span class="s1"&gt;'2024-01-01'&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="nt"&gt;-newermt&lt;/span&gt; &lt;span class="s1"&gt;'2024-02-01'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Common Pitfalls
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;find: paths must precede expression&lt;/strong&gt; — you placed an option after a test. Move &lt;code&gt;-maxdepth&lt;/code&gt;, &lt;code&gt;-mindepth&lt;/code&gt;, etc. before any &lt;code&gt;-name&lt;/code&gt;/&lt;code&gt;-type&lt;/code&gt; tests.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;find: missing argument to -exec&lt;/strong&gt; — you forgot the terminator. &lt;code&gt;-exec&lt;/code&gt; ends with &lt;code&gt;\;&lt;/code&gt; (one cmd per match) or &lt;code&gt;+&lt;/code&gt; (batched).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Pro Tips
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Always prefer &lt;code&gt;-exec ... +&lt;/code&gt; over &lt;code&gt;-exec ... \;&lt;/code&gt; for batched commands — orders of magnitude faster on big trees.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;-prune&lt;/code&gt; instead of post-grep filtering to skip &lt;code&gt;node_modules&lt;/code&gt;, &lt;code&gt;.git&lt;/code&gt;, etc. — find never descends, saving I/O.&lt;/li&gt;
&lt;li&gt;For regex on full paths, use &lt;code&gt;-regex&lt;/code&gt; with &lt;code&gt;-regextype posix-extended&lt;/code&gt;; &lt;code&gt;-name&lt;/code&gt; only matches the basename.&lt;/li&gt;
&lt;li&gt;Pair &lt;code&gt;-print0&lt;/code&gt; with &lt;code&gt;xargs -0&lt;/code&gt; when filenames may contain spaces or newlines.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Related Commands
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.commandinline.com/find-command-linux-practical-examples/" rel="noopener noreferrer"&gt;Practical find examples&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.commandinline.com/find-exec-linux-command-guide/" rel="noopener noreferrer"&gt;find -exec deep dive&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.commandinline.com/locate-command-cheat-sheet/" rel="noopener noreferrer"&gt;Fast database search with locate&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Try the &lt;code&gt;-prune&lt;/code&gt; trick on a project with &lt;code&gt;node_modules&lt;/code&gt; — find finishes in seconds where it used to crawl, and the syntax sticks immediately.&lt;/p&gt;

</description>
      <category>linux</category>
      <category>bash</category>
      <category>commandline</category>
      <category>sysadmin</category>
    </item>
    <item>
      <title>Get-Process Cmdlet — PowerShell Cheat Sheet &amp; Examples</title>
      <dc:creator>Cameroon Reeves</dc:creator>
      <pubDate>Wed, 06 May 2026 12:54:26 +0000</pubDate>
      <link>https://dev.to/cameroonreevesdev/get-process-cmdlet-powershell-cheat-sheet-examples-41d9</link>
      <guid>https://dev.to/cameroonreevesdev/get-process-cmdlet-powershell-cheat-sheet-examples-41d9</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://www.commandinline.com/get-process-cmdlet-cheat-sheet/" rel="noopener noreferrer"&gt;commandinline.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Get-Process&lt;/strong&gt; is the daily-driver cmdlet for listing and inspecting running processes on Windows and (in PowerShell 7+) Linux and macOS. It returns &lt;code&gt;System.Diagnostics.Process&lt;/code&gt; objects you can filter, sort, and pipe into &lt;a href="https://www.commandinline.com/stop-process-cmdlet-cheat-sheet/" rel="noopener noreferrer"&gt;Stop-Process&lt;/a&gt; or &lt;a href="https://www.commandinline.com/wait-process-cmdlet-cheat-sheet/" rel="noopener noreferrer"&gt;Wait-Process&lt;/a&gt;. This cheat sheet covers the parameters, pipeline patterns, and pitfalls you will hit in everyday automation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick Reference
&lt;/h2&gt;

&lt;p&gt;TL;DR: &lt;code&gt;Get-Process&lt;/code&gt; emits live &lt;code&gt;Process&lt;/code&gt; objects (not text). It is fully pipeline-friendly — chain it into &lt;code&gt;Where-Object&lt;/code&gt;, &lt;code&gt;Sort-Object&lt;/code&gt;, or &lt;code&gt;Stop-Process&lt;/code&gt;. The default formatter shows handles, NPM, PM, WS, CPU, Id, SI, ProcessName, but every property on &lt;code&gt;System.Diagnostics.Process&lt;/code&gt; is available downstream.&lt;/p&gt;

&lt;h2&gt;
  
  
  Syntax &amp;amp; Common Parameters
&lt;/h2&gt;

&lt;p&gt;Three parameter sets cover almost everything: by name, by Id, and by InputObject. The &lt;code&gt;-Name&lt;/code&gt; parameter accepts wildcards and an array; &lt;code&gt;-Id&lt;/code&gt; takes an integer or array of integers; &lt;code&gt;-IncludeUserName&lt;/code&gt; requires elevation but adds the owning account.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Core syntax&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;Get-Process&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[[&lt;/span&gt;&lt;span class="nt"&gt;-Name&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nt"&gt;-ComputerName&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nt"&gt;-Module&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nt"&gt;-FileVersionInfo&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nt"&gt;-IncludeUserName&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="n"&gt;Get-Process&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Id&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nt"&gt;-ComputerName&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;Get-Process&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-InputObject&lt;/span&gt;&lt;span class="w"&gt; 

&lt;/span&gt;&lt;span class="c"&gt;# Examples&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;Get-Process&lt;/span&gt;&lt;span class="w"&gt;                       &lt;/span&gt;&lt;span class="c"&gt;# all processes&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;Get-Process&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;notepad&lt;/span&gt;&lt;span class="w"&gt;         &lt;/span&gt;&lt;span class="c"&gt;# exact name (no .exe)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;Get-Process&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;chrome&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt;               &lt;/span&gt;&lt;span class="c"&gt;# wildcard&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;Get-Process&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;1234&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;5678&lt;/span&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="c"&gt;# by PID&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Common Use Cases
&lt;/h2&gt;

&lt;p&gt;Most workflows fall into “list everything,” “find one,” or “inspect details.” Use &lt;code&gt;-FileVersionInfo&lt;/code&gt; to grab vendor and product strings, and &lt;code&gt;-Module&lt;/code&gt; to enumerate loaded DLLs.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Snapshot of every process&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;Get-Process&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Format-Table&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-AutoSize&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="c"&gt;# Single process by name&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;Get-Process&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;explorer&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="c"&gt;# Get version info on the running pwsh.exe&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;Get-Process&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;pwsh&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-FileVersionInfo&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="c"&gt;# Loaded modules for a single process&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;Get-Process&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="bp"&gt;$PID&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Module&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;Select-Object&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;ModuleName&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;FileName&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Filtering &amp;amp; Output Formatting
&lt;/h2&gt;

&lt;p&gt;Filter on the rich object surface: &lt;code&gt;WorkingSet64&lt;/code&gt;, &lt;code&gt;CPU&lt;/code&gt;, &lt;code&gt;StartTime&lt;/code&gt;, &lt;code&gt;Path&lt;/code&gt;, &lt;code&gt;Responding&lt;/code&gt;. Format-cmdlets are display-only — never pipe them into a real cmdlet.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Top 10 by working-set memory (bytes)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;Get-Process&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Sort-Object&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;WorkingSet64&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Descending&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;Select-Object&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-First&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;10&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;@{&lt;/span&gt;&lt;span class="nx"&gt;N&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'WS_MB'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;E&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;math&lt;/span&gt;&lt;span class="p"&gt;]::&lt;/span&gt;&lt;span class="n"&gt;Round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;$_&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WorkingSet64&lt;/span&gt;&lt;span class="n"&gt;/1MB&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="c"&gt;# Hung processes (Responding flag false; Windows GUI apps only)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nx"&gt;Get&lt;/span&gt;&lt;span class="err"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;Process&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Where&lt;/span&gt;&lt;span class="err"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;Object&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-not&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="bp"&gt;$_&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Responding&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="c"&gt;# Processes started in the last hour&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nx"&gt;Get&lt;/span&gt;&lt;span class="err"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;Process&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Where&lt;/span&gt;&lt;span class="err"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;Object&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="bp"&gt;$_&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;StartTime&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-gt&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Get-Date&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;AddHours&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;-1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Pipeline Patterns
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;Get-Process&lt;/code&gt; shines as a producer. Pipe its output to other process cmdlets — they accept &lt;code&gt;Process&lt;/code&gt; objects via &lt;code&gt;-InputObject&lt;/code&gt; or &lt;code&gt;ValueFromPipeline&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Stop every Notepad instance&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;Get-Process&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;notepad&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-ErrorAction&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;SilentlyContinue&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Stop-Process&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="c"&gt;# Wait for a build to exit, then continue&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;Get-Process&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;msbuild&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-ErrorAction&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;SilentlyContinue&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Wait-Process&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="c"&gt;# Group by process name and count&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;Get-Process&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Group-Object&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;Sort-Object&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Count&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Descending&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;Select-Object&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-First&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;5&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Count&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Name&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Error Handling
&lt;/h2&gt;

&lt;p&gt;If a name does not match, &lt;code&gt;Get-Process&lt;/code&gt; emits a non-terminating error: &lt;code&gt;Cannot find a process with the name "X"&lt;/code&gt;. Use &lt;code&gt;-ErrorAction SilentlyContinue&lt;/code&gt; to suppress, or wrap in &lt;code&gt;try/catch&lt;/code&gt; with &lt;code&gt;-ErrorAction Stop&lt;/code&gt; for strict pipelines.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Suppress missing-process noise&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nv"&gt;$p&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Get-Process&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;notepad&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-ErrorAction&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;SilentlyContinue&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="kr"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$p&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'Notepad is running'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kr"&gt;else&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'Not running'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="c"&gt;# Promote to terminating error&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="kr"&gt;try&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;Get-Process&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;bogus&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-ErrorAction&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Stop&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kr"&gt;catch&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;Write-Warning&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Lookup failed: &lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="bp"&gt;$_&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Exception&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Message&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Real-World Examples
&lt;/h2&gt;

&lt;p&gt;Aggregate views, ownership lookups, and remote inspections cover most production needs. &lt;code&gt;-IncludeUserName&lt;/code&gt; requires an elevated session.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Memory grouped by process name&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;Get-Process&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Group-Object&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;ForEach-Object&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;pscustomobject&lt;/span&gt;&lt;span class="p"&gt;]@{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nx"&gt;Name&lt;/span&gt;&lt;span class="w"&gt;     &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="bp"&gt;$_&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Name&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nx"&gt;Count&lt;/span&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="bp"&gt;$_&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Count&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nx"&gt;TotalMB&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;math&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="err"&gt;::&lt;/span&gt;&lt;span class="nx"&gt;Round&lt;/span&gt;&lt;span class="err"&gt;(&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;$_&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Group&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;|&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="nx"&gt;Measure&lt;/span&gt;&lt;span class="err"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;Object&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;WorkingSet64&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;-&lt;/span&gt;&lt;span class="nx"&gt;Sum&lt;/span&gt;&lt;span class="err"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;Sum&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="nx"&gt;MB&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="err"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Sort-Object&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;TotalMB&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Descending&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Select-Object&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-First&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;10&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="c"&gt;# Owner per process (admin shell required)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;Get-Process&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-IncludeUserName&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="n"&gt;Select-Object&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;UserName&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-First&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;20&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="c"&gt;# Remote host (PS 5.1; deprecated in 7+)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;Get-Process&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-ComputerName&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;SERVER01&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;w3wp&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Common Pitfalls
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Name lookup fails with .exe&lt;/strong&gt; — pass &lt;code&gt;notepad&lt;/code&gt;, not &lt;code&gt;notepad.exe&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Access denied on other users' processes&lt;/strong&gt; — run elevated when using &lt;code&gt;-IncludeUserName&lt;/code&gt; or reading paths.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CPU column is total CPU-seconds since start&lt;/strong&gt;, not current load. Sample twice and diff for percentage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;-ComputerName is removed in PowerShell 7&lt;/strong&gt; — use &lt;code&gt;Invoke-Command&lt;/code&gt; or CIM cmdlets for remote process queries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Wildcard with -Name is case-insensitive on Windows&lt;/strong&gt; but case-sensitive on Linux file systems for path matching.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Pro Tips
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;gps&lt;/code&gt; and &lt;code&gt;ps&lt;/code&gt; are built-in aliases — &lt;code&gt;gps chrome | % Id&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Need PID of the current shell? &lt;code&gt;$PID&lt;/code&gt; is a built-in variable; &lt;code&gt;Get-Process -Id $PID&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;(Get-Process -Name code).Path | Select-Object -Unique&lt;/code&gt; reveals install location.&lt;/li&gt;
&lt;li&gt;Combine with &lt;code&gt;Where-Object&lt;/code&gt; using simple syntax: &lt;code&gt;Get-Process | ? WorkingSet64 -gt 500MB&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Related Cmdlets
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.commandinline.com/stop-process-cmdlet-cheat-sheet/" rel="noopener noreferrer"&gt;Stop-Process Cmdlet Cheat Sheet&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.commandinline.com/start-process-cmdlet-cheat-sheet/" rel="noopener noreferrer"&gt;Start-Process Cmdlet Cheat Sheet&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.commandinline.com/wait-process-cmdlet-cheat-sheet/" rel="noopener noreferrer"&gt;Wait-Process Cmdlet Cheat Sheet&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bookmark this page for the next time a runaway process eats your RAM — &lt;code&gt;Get-Process&lt;/code&gt; plus &lt;code&gt;Sort-Object WorkingSet64&lt;/code&gt; gets you to the culprit in two keystrokes.&lt;/p&gt;

</description>
      <category>powershell</category>
      <category>windows</category>
      <category>sysadmin</category>
      <category>automation</category>
    </item>
    <item>
      <title>grep Command Cheat Sheet — All Flags &amp; Usage Examples</title>
      <dc:creator>Cameroon Reeves</dc:creator>
      <pubDate>Wed, 06 May 2026 12:47:05 +0000</pubDate>
      <link>https://dev.to/cameroonreevesdev/grep-command-cheat-sheet-all-flags-usage-examples-3h1e</link>
      <guid>https://dev.to/cameroonreevesdev/grep-command-cheat-sheet-all-flags-usage-examples-3h1e</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://www.commandinline.com/grep-command-cheat-sheet/" rel="noopener noreferrer"&gt;commandinline.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;The &lt;code&gt;grep&lt;/code&gt; command searches files for lines matching a pattern&lt;/strong&gt; and is the single most-used text tool in any Unix admin's daily workflow. This cheat sheet covers basic and extended regex, recursion, context lines, file-type filtering, and the speed tricks that make multi-gigabyte log spelunking practical. Pair it with &lt;a href="https://www.commandinline.com/awk-command-cheat-sheet/" rel="noopener noreferrer"&gt;awk&lt;/a&gt; for column extraction or &lt;a href="https://www.commandinline.com/sed-command-cheat-sheet/" rel="noopener noreferrer"&gt;sed&lt;/a&gt; when you need to transform matches in place.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick Reference
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;grep PATTERN FILE&lt;/code&gt; finds matching lines. Add &lt;code&gt;-i&lt;/code&gt; for case-insensitive, &lt;code&gt;-v&lt;/code&gt; to invert, &lt;code&gt;-r&lt;/code&gt; to recurse, &lt;code&gt;-n&lt;/code&gt; for line numbers, &lt;code&gt;-l&lt;/code&gt; for filenames only, &lt;code&gt;-c&lt;/code&gt; for counts, &lt;code&gt;-A/-B/-C N&lt;/code&gt; for context lines, &lt;code&gt;-E&lt;/code&gt; for extended regex, and &lt;code&gt;-F&lt;/code&gt; for fixed strings. &lt;code&gt;--include='*.py'&lt;/code&gt; filters file types during recursion.&lt;/p&gt;

&lt;h2&gt;
  
  
  Syntax &amp;amp; Common Options
&lt;/h2&gt;

&lt;p&gt;The general form is &lt;code&gt;grep [OPTIONS] PATTERN [FILE...]&lt;/code&gt;. When no file is given, grep reads stdin.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;OPTIONS] PATTERN &lt;span class="o"&gt;[&lt;/span&gt;FILE...]
  &lt;span class="nt"&gt;-i&lt;/span&gt;        &lt;span class="c"&gt;# case-insensitive&lt;/span&gt;
  &lt;span class="nt"&gt;-v&lt;/span&gt;        &lt;span class="c"&gt;# invert match (lines NOT matching)&lt;/span&gt;
  &lt;span class="nt"&gt;-r&lt;/span&gt; / &lt;span class="nt"&gt;-R&lt;/span&gt;   &lt;span class="c"&gt;# recursive (R follows symlinks)&lt;/span&gt;
  &lt;span class="nt"&gt;-n&lt;/span&gt;        &lt;span class="c"&gt;# show line numbers&lt;/span&gt;
  &lt;span class="nt"&gt;-l&lt;/span&gt;        &lt;span class="c"&gt;# only print filenames with matches&lt;/span&gt;
  &lt;span class="nt"&gt;-L&lt;/span&gt;        &lt;span class="c"&gt;# only print filenames WITHOUT matches&lt;/span&gt;
  &lt;span class="nt"&gt;-c&lt;/span&gt;        &lt;span class="c"&gt;# count of matching lines per file&lt;/span&gt;
  &lt;span class="nt"&gt;-o&lt;/span&gt;        &lt;span class="c"&gt;# print only the matching part&lt;/span&gt;
  &lt;span class="nt"&gt;-w&lt;/span&gt;        &lt;span class="c"&gt;# match whole words&lt;/span&gt;
  &lt;span class="nt"&gt;-x&lt;/span&gt;        &lt;span class="c"&gt;# match whole lines&lt;/span&gt;
  &lt;span class="nt"&gt;-E&lt;/span&gt;        &lt;span class="c"&gt;# extended regex (egrep)&lt;/span&gt;
  &lt;span class="nt"&gt;-F&lt;/span&gt;        &lt;span class="c"&gt;# fixed string, no regex (fgrep)&lt;/span&gt;
  &lt;span class="nt"&gt;-P&lt;/span&gt;        &lt;span class="c"&gt;# Perl-compatible regex (PCRE)&lt;/span&gt;
  &lt;span class="nt"&gt;-A&lt;/span&gt; N      &lt;span class="c"&gt;# N lines after match&lt;/span&gt;
  &lt;span class="nt"&gt;-B&lt;/span&gt; N      &lt;span class="c"&gt;# N lines before match&lt;/span&gt;
  &lt;span class="nt"&gt;-C&lt;/span&gt; N      &lt;span class="c"&gt;# N lines of context (before AND after)&lt;/span&gt;
  &lt;span class="nt"&gt;--include&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'GLOB'&lt;/span&gt;   &lt;span class="c"&gt;# only search matching files&lt;/span&gt;
  &lt;span class="nt"&gt;--exclude-dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;DIR  &lt;span class="c"&gt;# skip directories&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Syntax
&lt;/h2&gt;

&lt;p&gt;Quote your pattern to keep the shell from expanding it. Single quotes are safest for regex characters like &lt;code&gt;$&lt;/code&gt;, &lt;code&gt;*&lt;/code&gt;, and parentheses.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Basic search&lt;/span&gt;
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="s1"&gt;'ERROR'&lt;/span&gt; /var/log/syslog

&lt;span class="c"&gt;# Multiple files&lt;/span&gt;
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="s1"&gt;'timeout'&lt;/span&gt; /var/log/nginx/&lt;span class="k"&gt;*&lt;/span&gt;.log

&lt;span class="c"&gt;# Read from stdin&lt;/span&gt;
journalctl &lt;span class="nt"&gt;-u&lt;/span&gt; sshd | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="s1"&gt;'Failed password'&lt;/span&gt;

&lt;span class="c"&gt;# Search recursively under a directory&lt;/span&gt;
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'TODO'&lt;/span&gt; src/

&lt;span class="c"&gt;# Use -e to combine multiple patterns&lt;/span&gt;
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="s1"&gt;'ERROR'&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="s1"&gt;'WARN'&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="s1"&gt;'CRITICAL'&lt;/span&gt; app.log
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Quick Reference Table
&lt;/h2&gt;

&lt;p&gt;The patterns and flags that solve 90% of real searches.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Find IP addresses (basic POSIX regex with -E)&lt;/span&gt;
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-E&lt;/span&gt; &lt;span class="s1"&gt;'([0-9]{1,3}\.){3}[0-9]{1,3}'&lt;/span&gt; access.log

&lt;span class="c"&gt;# Lines starting with ERROR&lt;/span&gt;
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="s1"&gt;'^ERROR'&lt;/span&gt; app.log

&lt;span class="c"&gt;# Lines ending in a digit&lt;/span&gt;
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="s1"&gt;'[0-9]$'&lt;/span&gt; data.txt

&lt;span class="c"&gt;# Empty lines&lt;/span&gt;
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="s1"&gt;'^$'&lt;/span&gt; file.txt

&lt;span class="c"&gt;# Non-empty lines (invert empty)&lt;/span&gt;
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-v&lt;/span&gt; &lt;span class="s1"&gt;'^$'&lt;/span&gt; file.txt

&lt;span class="c"&gt;# Comments and blanks (typical for cleaning configs)&lt;/span&gt;
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-Ev&lt;/span&gt; &lt;span class="s1"&gt;'^(#|$)'&lt;/span&gt; /etc/ssh/sshd_config
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Common Flags
&lt;/h2&gt;

&lt;p&gt;Day-to-day combinations that show up in incident response and code search.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Case-insensitive recursive search with line numbers&lt;/span&gt;
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-rin&lt;/span&gt; &lt;span class="s1"&gt;'connection refused'&lt;/span&gt; /var/log/

&lt;span class="c"&gt;# Count occurrences per file&lt;/span&gt;
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s1"&gt;'ERROR'&lt;/span&gt; /var/log/&lt;span class="k"&gt;*&lt;/span&gt;.log

&lt;span class="c"&gt;# Only print filenames that contain a match&lt;/span&gt;
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-rl&lt;/span&gt; &lt;span class="s1"&gt;'API_KEY'&lt;/span&gt; &lt;span class="nb"&gt;.&lt;/span&gt;

&lt;span class="c"&gt;# Exclude vendor and node_modules from a code search&lt;/span&gt;
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'TODO'&lt;/span&gt; &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;--exclude-dir&lt;/span&gt;&lt;span class="o"&gt;={&lt;/span&gt;node_modules,vendor,.git&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="c"&gt;# Search only Python files&lt;/span&gt;
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-rn&lt;/span&gt; &lt;span class="nt"&gt;--include&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'*.py'&lt;/span&gt; &lt;span class="s1"&gt;'import requests'&lt;/span&gt; &lt;span class="nb"&gt;.&lt;/span&gt;

&lt;span class="c"&gt;# Show 3 lines of context around each match&lt;/span&gt;
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-C&lt;/span&gt; 3 &lt;span class="s1"&gt;'segfault'&lt;/span&gt; /var/log/kern.log
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Practical Examples
&lt;/h2&gt;

&lt;p&gt;Real diagnostic and admin patterns.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Find failed SSH logins with usernames&lt;/span&gt;
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="s1"&gt;'Failed password'&lt;/span&gt; /var/log/auth.log | &lt;span class="nb"&gt;awk&lt;/span&gt; &lt;span class="s1"&gt;'{print $9, $11}'&lt;/span&gt;

&lt;span class="c"&gt;# Pull all 5xx responses from an Nginx access log&lt;/span&gt;
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-E&lt;/span&gt; &lt;span class="s1"&gt;' 5[0-9]{2} '&lt;/span&gt; /var/log/nginx/access.log

&lt;span class="c"&gt;# Locate a process listening on a specific port&lt;/span&gt;
ss &lt;span class="nt"&gt;-tnlp&lt;/span&gt; | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="s1"&gt;':443'&lt;/span&gt;

&lt;span class="c"&gt;# Find all files containing a deprecated API call&lt;/span&gt;
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-rln&lt;/span&gt; &lt;span class="nt"&gt;--include&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'*.go'&lt;/span&gt; &lt;span class="s1"&gt;'ioutil.ReadAll'&lt;/span&gt; &lt;span class="nb"&gt;.&lt;/span&gt;

&lt;span class="c"&gt;# Extract just the matching email addresses&lt;/span&gt;
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-oE&lt;/span&gt; &lt;span class="s1"&gt;'[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+'&lt;/span&gt; contacts.txt

&lt;span class="c"&gt;# Show 10 lines after every "panic" entry&lt;/span&gt;
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-A&lt;/span&gt; 10 &lt;span class="s1"&gt;'panic:'&lt;/span&gt; /var/log/syslog
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Tips and Tricks
&lt;/h2&gt;

&lt;p&gt;Performance and ergonomics tricks that pay off on big trees.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Combine -F with a file of fixed strings (huge speedup)&lt;/span&gt;
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-Ff&lt;/span&gt; blocked_ips.txt access.log

&lt;span class="c"&gt;# Set GREP_COLORS for custom highlight (or use --color=always)&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;GREP_COLOR&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'1;31'&lt;/span&gt;   &lt;span class="c"&gt;# bright red matches&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;GREP_OPTIONS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;''&lt;/span&gt;     &lt;span class="c"&gt;# avoid (deprecated, breaks scripts)&lt;/span&gt;

&lt;span class="c"&gt;# Use --color=auto in interactive shells, never in scripts&lt;/span&gt;
&lt;span class="nb"&gt;alias grep&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'grep --color=auto'&lt;/span&gt;

&lt;span class="c"&gt;# When grep is too slow, switch to ripgrep (rg) — same flags&lt;/span&gt;
rg &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="s1"&gt;'pattern'&lt;/span&gt; &lt;span class="nb"&gt;.&lt;/span&gt;

&lt;span class="c"&gt;# Use -P for lookarounds and \d shortcuts (PCRE)&lt;/span&gt;
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-P&lt;/span&gt; &lt;span class="s1"&gt;'(?&amp;lt;=user=)\w+'&lt;/span&gt; /var/log/auth.log
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Common Pitfalls
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;"grep: invalid option"&lt;/strong&gt; — your pattern starts with &lt;code&gt;-&lt;/code&gt;. Use &lt;code&gt;--&lt;/code&gt; or &lt;code&gt;-e&lt;/code&gt;: &lt;code&gt;grep -e '-foo' file&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;"Binary file matches"&lt;/strong&gt; — pass &lt;code&gt;-a&lt;/code&gt; to treat as text, or &lt;code&gt;-I&lt;/code&gt; to skip binaries entirely.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No matches when you expect them&lt;/strong&gt; — check case (&lt;code&gt;-i&lt;/code&gt;), check whether you need &lt;code&gt;-E&lt;/code&gt; for &lt;code&gt;+&lt;/code&gt;/&lt;code&gt;?&lt;/code&gt;, and confirm the file actually contains the pattern with &lt;code&gt;cat -A&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Recursive search hangs&lt;/strong&gt; — you crossed into &lt;code&gt;/proc&lt;/code&gt; or a network mount. Add &lt;code&gt;--exclude-dir&lt;/code&gt; or use &lt;code&gt;-r&lt;/code&gt; instead of &lt;code&gt;-R&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Pro Tips
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Pipe through &lt;code&gt;grep --color=always | less -R&lt;/code&gt; to keep highlights when paging.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;grep -B 1 -A 1 'KEY:'&lt;/code&gt; to show YAML/INI keys with surrounding context.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;zgrep&lt;/code&gt;, &lt;code&gt;bzgrep&lt;/code&gt;, and &lt;code&gt;xzgrep&lt;/code&gt; search compressed logs without decompressing first.&lt;/li&gt;
&lt;li&gt;Replace &lt;code&gt;grep | wc -l&lt;/code&gt; with &lt;code&gt;grep -c&lt;/code&gt; — saves a process and works on big files.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Related Commands
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.commandinline.com/awk-command-cheat-sheet/" rel="noopener noreferrer"&gt;awk command cheat sheet&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.commandinline.com/sed-command-cheat-sheet/" rel="noopener noreferrer"&gt;sed command cheat sheet&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.commandinline.com/ripgrep-vs-grep-faster-search/" rel="noopener noreferrer"&gt;ripgrep vs grep faster search&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Master a dozen of these patterns and you will replace half your "open the file in an editor" reflex with a one-line grep.&lt;/p&gt;

</description>
      <category>linux</category>
      <category>bash</category>
      <category>commandline</category>
      <category>sysadmin</category>
    </item>
    <item>
      <title>ls Command Cheat Sheet — All Flags &amp; Usage Examples</title>
      <dc:creator>Cameroon Reeves</dc:creator>
      <pubDate>Wed, 06 May 2026 12:45:33 +0000</pubDate>
      <link>https://dev.to/cameroonreevesdev/ls-command-cheat-sheet-all-flags-usage-examples-3fan</link>
      <guid>https://dev.to/cameroonreevesdev/ls-command-cheat-sheet-all-flags-usage-examples-3fan</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://www.commandinline.com/ls-command-cheat-sheet/" rel="noopener noreferrer"&gt;commandinline.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;The &lt;code&gt;ls&lt;/code&gt; command is the first thing every Linux user types and the last one they ever stop tuning.&lt;/strong&gt; It lists directory contents, but its real value is in the dozens of flags that turn a plain listing into a permissions audit, a size report, or a sort by modification time. Pair it with &lt;a href="https://www.commandinline.com/find-command-linux-practical-examples/" rel="noopener noreferrer"&gt;advanced find searches&lt;/a&gt; for filtered hunts and &lt;a href="https://www.commandinline.com/stat-command-linux-file-metadata/" rel="noopener noreferrer"&gt;stat for deep file metadata&lt;/a&gt; when ls output is not enough.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick Reference
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;ls&lt;/code&gt; prints the names of files and directories. Reach for it any time you need to see what is in a path, when a file last changed, who owns it, or how much disk it occupies. With the right flags it replaces a half-dozen ad hoc commands at once.&lt;/p&gt;

&lt;h2&gt;
  
  
  Syntax &amp;amp; Common Options
&lt;/h2&gt;

&lt;p&gt;The general form is &lt;code&gt;ls [OPTION]... [FILE]...&lt;/code&gt;. With no path, &lt;code&gt;ls&lt;/code&gt; lists the current directory. Combine flags freely — order does not matter.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-lah&lt;/span&gt; &lt;span class="nt"&gt;--color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;auto /var/log
&lt;span class="c"&gt;# -l   long listing: perms, links, owner, group, size, mtime&lt;/span&gt;
&lt;span class="c"&gt;# -a   include dotfiles&lt;/span&gt;
&lt;span class="c"&gt;# -h   human-readable sizes (1K, 234M, 2G)&lt;/span&gt;
&lt;span class="c"&gt;# --color=auto  colorize when stdout is a TTY&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Syntax
&lt;/h2&gt;

&lt;p&gt;The minimal invocation is just &lt;code&gt;ls&lt;/code&gt;. Pass one or more paths to list specific targets, and stack short flags together (&lt;code&gt;-lah&lt;/code&gt;) for compact commands.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;ls&lt;/span&gt;                  &lt;span class="c"&gt;# current directory&lt;/span&gt;
&lt;span class="nb"&gt;ls&lt;/span&gt; /etc /var        &lt;span class="c"&gt;# multiple paths&lt;/span&gt;
&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt;/            &lt;span class="c"&gt;# list directories themselves, not their contents&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Quick Reference Table
&lt;/h2&gt;

&lt;p&gt;The flags you will reach for daily, mapped to what they actually do.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nt"&gt;-l&lt;/span&gt;    long format
&lt;span class="nt"&gt;-a&lt;/span&gt;    show hidden &lt;span class="o"&gt;(&lt;/span&gt;dotfiles&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nt"&gt;-A&lt;/span&gt;    like &lt;span class="nt"&gt;-a&lt;/span&gt; but skip &lt;span class="nb"&gt;.&lt;/span&gt; and ..
&lt;span class="nt"&gt;-h&lt;/span&gt;    human-readable sizes &lt;span class="o"&gt;(&lt;/span&gt;use with &lt;span class="nt"&gt;-l&lt;/span&gt; or &lt;span class="nt"&gt;-s&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nt"&gt;-S&lt;/span&gt;    &lt;span class="nb"&gt;sort &lt;/span&gt;by file size, largest first
&lt;span class="nt"&gt;-t&lt;/span&gt;    &lt;span class="nb"&gt;sort &lt;/span&gt;by modification &lt;span class="nb"&gt;time&lt;/span&gt;, newest first
&lt;span class="nt"&gt;-r&lt;/span&gt;    reverse the &lt;span class="nb"&gt;sort&lt;/span&gt;
&lt;span class="nt"&gt;-R&lt;/span&gt;    recursive into subdirectories
&lt;span class="nt"&gt;-1&lt;/span&gt;    one entry per line &lt;span class="o"&gt;(&lt;/span&gt;script-friendly&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="nt"&gt;-i&lt;/span&gt;    show inode numbers
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Common Flags
&lt;/h2&gt;

&lt;p&gt;For day-to-day use, &lt;code&gt;-lh&lt;/code&gt; is the workhorse. Add &lt;code&gt;-t&lt;/code&gt; when you want freshly modified files first, or &lt;code&gt;-S&lt;/code&gt; when hunting disk hogs.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-lhSr&lt;/span&gt;        &lt;span class="c"&gt;# sort by size ascending, human-readable&lt;/span&gt;
&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-lt&lt;/span&gt; | &lt;span class="nb"&gt;head&lt;/span&gt;   &lt;span class="c"&gt;# 10 most recently modified entries&lt;/span&gt;
&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-ld&lt;/span&gt; /etc     &lt;span class="c"&gt;# show directory's own metadata, not its contents&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Practical Examples
&lt;/h2&gt;

&lt;p&gt;Real workflows: find the biggest files, audit permissions, list only directories, or feed a clean filename list into a pipeline.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Top 5 largest files in current dir&lt;/span&gt;
&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-lhS&lt;/span&gt; | &lt;span class="nb"&gt;head&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; 6

&lt;span class="c"&gt;# All files modified in the last few minutes (combine with stat for precision)&lt;/span&gt;
&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-lt&lt;/span&gt; | &lt;span class="nb"&gt;head&lt;/span&gt;

&lt;span class="c"&gt;# Only directories, with trailing slash&lt;/span&gt;
&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt;/

&lt;span class="c"&gt;# Machine-readable: one filename per line, no decoration&lt;/span&gt;
&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-1&lt;/span&gt; &lt;span class="nt"&gt;--color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;never
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Tips and Tricks
&lt;/h2&gt;

&lt;p&gt;A few flag combinations every sysadmin keeps in muscle memory.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Show hidden + sort by size + human readable&lt;/span&gt;
&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-lAhS&lt;/span&gt;

&lt;span class="c"&gt;# Recursive listing piped to grep for a quick search&lt;/span&gt;
&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-R&lt;/span&gt; /etc | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; ssh

&lt;span class="c"&gt;# Quote names with spaces or special chars&lt;/span&gt;
&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-lQ&lt;/span&gt;

&lt;span class="c"&gt;# Long format including SELinux/ACL indicators&lt;/span&gt;
&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-lZ&lt;/span&gt;          &lt;span class="c"&gt;# SELinux context&lt;/span&gt;
&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-l&lt;/span&gt;           &lt;span class="c"&gt;# trailing '+' marks ACLs present&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Common Pitfalls
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ls: cannot access: No such file or directory&lt;/strong&gt; — the path argument does not exist or is misspelled. Tab-complete to verify, or quote globs that may have failed to expand.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Permission denied listing /root&lt;/strong&gt; — the directory has mode 700 and you are not its owner. Re-run with &lt;code&gt;sudo ls /root&lt;/code&gt; or check ownership with &lt;code&gt;ls -ld /root&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Pro Tips
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Alias &lt;code&gt;ll='ls -lah'&lt;/code&gt; in &lt;code&gt;~/.bashrc&lt;/code&gt; — it is on every veteran's shell.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;ls --group-directories-first&lt;/code&gt; on GNU coreutils to keep folders at the top.&lt;/li&gt;
&lt;li&gt;Pipe &lt;code&gt;ls -1&lt;/code&gt; (digit one) into &lt;code&gt;xargs&lt;/code&gt; only for filenames without spaces; otherwise prefer &lt;code&gt;find -print0 | xargs -0&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Replace &lt;code&gt;ls&lt;/code&gt; with &lt;code&gt;eza&lt;/code&gt; or &lt;code&gt;exa&lt;/code&gt; for git-aware listings and tree mode.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Related Commands
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.commandinline.com/find-command-linux-practical-examples/" rel="noopener noreferrer"&gt;Master find for advanced searches&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.commandinline.com/stat-command-linux-file-metadata/" rel="noopener noreferrer"&gt;Inspect file metadata with stat&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.commandinline.com/tree-command-cheat-sheet/" rel="noopener noreferrer"&gt;Visualize directories with tree&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bookmark this sheet and try the flag combos on a test box right now — your future self will thank you when a 500-file directory needs sorting at 2 a.m.&lt;/p&gt;

</description>
      <category>linux</category>
      <category>bash</category>
      <category>commandline</category>
      <category>sysadmin</category>
    </item>
  </channel>
</rss>
