<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Knowledge Base (Posts about newest)</title><link>https://bgstack15.ddns.net/blog/</link><description></description><atom:link href="https://bgstack15.ddns.net/blog/categories/newest.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2022 &lt;a href="mailto:bgstack15@gmail.com"&gt;bgstack15&lt;/a&gt; 
&lt;a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/"&gt;
&lt;img alt="Creative Commons License BY-SA"
style="border-width:0; margin-bottom:12px;"
src="https://bgstack15.ddns.net/.images/l_by-sa_4.0_88x31.png"&gt;&lt;/a&gt;</copyright><lastBuildDate>Sun, 27 Feb 2022 04:05:24 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Shell function: newest</title><link>https://bgstack15.ddns.net/blog/posts/2022/01/21/shell-function-newest/</link><dc:creator>bgstack15</dc:creator><description>&lt;p&gt;One of my small shell functions in my user profile is &lt;code&gt;newest&lt;/code&gt; which I use on a daily basis. I wrote it about 5 years ago as an easy way to get the filename of the most recently modified file in a given path.&lt;/p&gt;
&lt;p&gt;Here's the source of the function:&lt;/p&gt;
&lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;newest() { 
   [[ ! "$1" = "" ]] &amp;amp;&amp;amp; searchdir="$1" || searchdir=".";
   [[ ! "$2" = "" ]] &amp;amp;&amp;amp; searchstring="$2" || searchstring="*";
   find $searchdir -name "*$searchstring*" 2&amp;gt; /dev/null | xargs ls -t 2&amp;gt; /dev/null | head -n 1
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I can tell that my style has changed in the years since I wrote this. Here's how I would write it today. Optionally I would add &lt;code&gt;-maxdepth 1 -mindepth 1&lt;/code&gt; to the find invocation. Maybe that should be another parameter.&lt;/p&gt;
&lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;newest() {
   ___sdir="." ; test -n "&lt;span class="cp"&gt;${&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="cp"&gt;}&lt;/span&gt;" &lt;span class="err"&gt;&amp;amp;&amp;amp;&lt;/span&gt; ___sdir="&lt;span class="cp"&gt;${&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="cp"&gt;}&lt;/span&gt;" ;
   ___sstr="*" ; test -n "&lt;span class="cp"&gt;${&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="cp"&gt;}&lt;/span&gt;" &lt;span class="err"&gt;&amp;amp;&amp;amp;&lt;/span&gt; ___sstr="&lt;span class="cp"&gt;${&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="cp"&gt;}&lt;/span&gt;" ;
   { find "&lt;span class="cp"&gt;${&lt;/span&gt;&lt;span class="n"&gt;___sdir&lt;/span&gt;&lt;span class="cp"&gt;}&lt;/span&gt;" -name "*&lt;span class="cp"&gt;${&lt;/span&gt;&lt;span class="n"&gt;___sstr&lt;/span&gt;&lt;span class="cp"&gt;}&lt;/span&gt;*" | xargs ls -1t | head -n1 ; } 2&amp;gt;/dev/null
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;So what this function does is show the full pathname of the file that is most recently modified. It's great for when you want to edit the most recent file, such as today's log file:&lt;/p&gt;
&lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;vi&lt;/span&gt; &lt;span class="o"&gt;$&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="n"&gt;newest&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;mnt&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;public&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;Support&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;Systems&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;server1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="k"&gt;var&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nb"&gt;log&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;debmirror&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;</description><category>files</category><category>function</category><category>newest</category><category>shell</category><guid>https://bgstack15.ddns.net/blog/posts/2022/01/21/shell-function-newest/</guid><pubDate>Fri, 21 Jan 2022 13:51:28 GMT</pubDate></item></channel></rss>