<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Aldolat.it &#8212; Post con tag Bash</title>
        <link>https://www.aldolat.it/tags/bash/</link>
        <description>Ultimi post pubblicati nel tag Bash &#8212; aldolat.it</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>it</language>
        <managingEditor>aldolat@gmail.com (Aldo Latino)</managingEditor>
        <webMaster>aldolat@gmail.com (Aldo Latino)</webMaster>
        <copyright>Creative Commons BY-SA 4.0</copyright>
        <lastBuildDate>Sat, 25 Jan 2025 17:31:13 +0100</lastBuildDate>
        <atom:link href="https://www.aldolat.it/tags/bash/index.xml" rel="self" type="application/rss+xml" />
        <item>
            <title>Concatenare più file CSV</title>
            <link>https://www.aldolat.it/posts/2024/concatenare-piu-file-csv/</link>
            <pubDate>Sat, 19 Oct 2024 09:31:07 +0200</pubDate>
            <author>aldolat@gmail.com (Aldo Latino)</author>
            <guid>https://www.aldolat.it/posts/2024/concatenare-piu-file-csv/</guid>
            <description>Concatenare molti file CSV, tenendo l&#39;intestazione dei dati una volta sola, può essere un incubo, ma con Linux è molto semplice farlo.</description>
            <content:encoded>Concatenare molti file CSV, tenendo l&#39;intestazione dei dati una volta sola, può essere un incubo, ma con Linux è molto semplice farlo.&lt;p&gt;* * *&lt;/p&gt;&lt;p class=&#34;dc&#34;&gt;U&lt;span class=&#34;allsc&#34;&gt;ltimamente ho&lt;/span&gt; avuto l&amp;rsquo;esigenza di unire tantissimi file di testo in formato&#xA;&lt;code&gt;.csv&lt;/code&gt; in modo da poterli riutilizzare altrove.&#xA;Ogni file era composto da una riga di intestazione e dai dati a seguire. La mia&#xA;esigenza era di unirli tutti assieme, mettendo un&amp;rsquo;unica intestazione con tutti i&#xA;dati dopo di essa. Come si possono unire 622 file in questo modo con Linux?&lt;/p&gt;&#xA;&lt;h2 id=&#34;la-situazione&#34;&gt;La situazione&lt;/h2&gt;&#xA;&lt;p&gt;Supponiamo che stiamo lavorando col terminale dentro la directory &lt;code&gt;job&lt;/code&gt; e che i&#xA;file &lt;code&gt;.csv&lt;/code&gt; siano in una sotto-directory chiamata &lt;code&gt;dati&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;job/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├── dati&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── file-001.csv&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── file-002.csv&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── file-003.csv&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│   ├── ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ogni file &lt;code&gt;.csv&lt;/code&gt; è composto così:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;LOCALITA;DATA;TMEDIA °C;TMIN °C;TMAX °C;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Roma;1/5/2010;&amp;#34;17&amp;#34;;&amp;#34;10&amp;#34;;&amp;#34;22&amp;#34;;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Roma;2/5/2010;&amp;#34;17&amp;#34;;&amp;#34;13&amp;#34;;&amp;#34;21&amp;#34;;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Roma;3/5/2010;&amp;#34;18&amp;#34;;&amp;#34;16&amp;#34;;&amp;#34;21&amp;#34;;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;La prima riga è l&amp;rsquo;intestazione, le successive i dati veri e propri. L&amp;rsquo;idea è&#xA;quella di prelevare la riga di intestazione dal primo file e successivamente di&#xA;prelevare tutte le righe da tutti i file, escludendo però la prima riga, che&#xA;abbiamo già prelevato e che è identica in ogni file. Per il nostro scopo&#xA;possiamo usare &lt;code&gt;head&lt;/code&gt; e &lt;code&gt;tail&lt;/code&gt;, in un unico comando.&lt;/p&gt;&#xA;&lt;h2 id=&#34;il-comando&#34;&gt;Il comando&lt;/h2&gt;&#xA;&lt;p&gt;Il glorioso ed efficiente comando è:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;head -n &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; dati/file-001.csv &amp;gt; unito.csv &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; tail -n+2 -q dati/*.csv &amp;gt;&amp;gt; unito.csv&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Vediamolo nel dettaglio. Il comando è composto da due comandi distinti:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;head ... &lt;span class=&#34;o&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; tail ...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Il primo comando (&lt;code&gt;head -n 1&lt;/code&gt;) preleva dal primo file (ma potrebbe essere&#xA;qualunque file, visto che tutti hanno la stessa intestazione dati) la riga di&#xA;intestazione e la scrive nel file &lt;code&gt;unito.csv&lt;/code&gt; dentro la directory &lt;code&gt;job&lt;/code&gt;,&#xA;esternamente quindi alla directory &lt;code&gt;dati&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Il secondo (&lt;code&gt;tail -n+2&lt;/code&gt;) preleva da tutti file &lt;code&gt;.csv&lt;/code&gt; tutte le righe a partire&#xA;dalla seconda e le accoda al file &lt;code&gt;unito.csv&lt;/code&gt;. Il parametro &lt;code&gt;-q&lt;/code&gt; dice a &lt;code&gt;tail&lt;/code&gt;&#xA;di non scrivere, prima di ogni blocco di testo accodato nel file &lt;code&gt;unito.csv&lt;/code&gt;, la&#xA;riga da cui ha prelevato il blocco stesso. Se togliessimo &lt;code&gt;-q&lt;/code&gt; il risultato&#xA;sarebbe qualcosa del tipo:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;LOCALITA;DATA;TMEDIA °C;TMIN °C;TMAX °C;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;==&amp;gt; dati_meteo_roma/2010_05_Maggio_roma.csv &amp;lt;==&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Roma;1/5/2010;&amp;#34;17&amp;#34;;&amp;#34;10&amp;#34;;&amp;#34;22&amp;#34;;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Roma;2/5/2010;&amp;#34;17&amp;#34;;&amp;#34;13&amp;#34;;&amp;#34;21&amp;#34;;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Roma;3/5/2010;&amp;#34;18&amp;#34;;&amp;#34;16&amp;#34;;&amp;#34;21&amp;#34;;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;==&amp;gt; dati_meteo_roma/2010_06_Giugno_roma.csv &amp;lt;==&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Roma;1/6/2010;&amp;#34;18&amp;#34;;&amp;#34;13&amp;#34;;&amp;#34;23&amp;#34;;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Roma;2/6/2010;&amp;#34;18&amp;#34;;&amp;#34;15&amp;#34;;&amp;#34;23&amp;#34;;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Roma;3/6/2010;&amp;#34;17&amp;#34;;&amp;#34;11&amp;#34;;&amp;#34;22&amp;#34;;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Con il parametro &lt;code&gt;-q&lt;/code&gt;, invece, i dati saranno posti uno sotto l&amp;rsquo;altro:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;LOCALITA;DATA;TMEDIA °C;TMIN °C;TMAX °C;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Roma;1/5/2010;&amp;#34;17&amp;#34;;&amp;#34;10&amp;#34;;&amp;#34;22&amp;#34;;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Roma;2/5/2010;&amp;#34;17&amp;#34;;&amp;#34;13&amp;#34;;&amp;#34;21&amp;#34;;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Roma;3/5/2010;&amp;#34;18&amp;#34;;&amp;#34;16&amp;#34;;&amp;#34;21&amp;#34;;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Roma;30/5/2010;&amp;#34;22&amp;#34;;&amp;#34;16&amp;#34;;&amp;#34;27&amp;#34;;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Roma;31/5/2010;&amp;#34;20&amp;#34;;&amp;#34;16&amp;#34;;&amp;#34;25&amp;#34;;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Roma;1/6/2010;&amp;#34;18&amp;#34;;&amp;#34;13&amp;#34;;&amp;#34;23&amp;#34;;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Roma;2/6/2010;&amp;#34;18&amp;#34;;&amp;#34;15&amp;#34;;&amp;#34;23&amp;#34;;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Roma;3/6/2010;&amp;#34;17&amp;#34;;&amp;#34;11&amp;#34;;&amp;#34;22&amp;#34;;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;...&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Quanto tempo e lavoro sarebbe stato necessario se avessimo dovuto farlo&#xA;manualmente?&lt;/p&gt;&#xA;&lt;p&gt;L&#39;articolo &lt;a href=&#34;https://www.aldolat.it/posts/2024/concatenare-piu-file-csv/&#34;&gt;Concatenare più file CSV&lt;/a&gt; è uno scritto di &lt;a href=&#34;https://www.aldolat.it/&#34;&gt;aldolat.it&lt;/a&gt;. Rispettane le &lt;a href=&#34;https://www.aldolat.it/info/#licenza&#34;&gt;condizioni di licenza&lt;/a&gt;.&lt;/p&gt;</content:encoded>
        </item>
        <item>
            <title>Cancellare righe con sed</title>
            <link>https://www.aldolat.it/posts/2022/cancellare-righe-con-sed/</link>
            <pubDate>Tue, 26 Apr 2022 20:55:01 +0200</pubDate>
            <author>aldolat@gmail.com (Aldo Latino)</author>
            <guid>https://www.aldolat.it/posts/2022/cancellare-righe-con-sed/</guid>
            <description>Nel processo di migrazione a Hugo dovevo modificare in tantissimi file di testo alcune righe, un po&amp;rsquo; come già successo qui. Oggi dovevo cancellare dal Front matter alcune righe. Un lavoro noiosissimo da fare a mano.&#xA;Cancellare una riga soltanto Dovevo cancellare la riga contenente questa stringa:&#xA;url: /vecchio/indirizzo/da/cancellare Mi è bastato questo comando di sed:&#xA;sed -i &amp;#39;/url:/d&amp;#39; *.md Cancellare una riga e la successiva In questo caso la situazione è un po&amp;rsquo; più complessa. Le righe da cancellare erano queste due:</description>
            <content:encoded>&lt;p class=&#34;dc&#34;&gt;N&lt;span class=&#34;allsc&#34;&gt;el processo&lt;/span&gt; di migrazione a Hugo dovevo modificare in tantissimi file di testo alcune righe, un po&amp;rsquo; come già successo &lt;a href=&#34;https://www.aldolat.it/posts/2022/cambiare-stringa-molti-file-testo/&#34;&gt;qui&lt;/a&gt;. Oggi dovevo cancellare dal &lt;em&gt;Front matter&lt;/em&gt; alcune righe. Un lavoro noiosissimo da fare a mano.&lt;/p&gt;&#xA;&lt;h2 id=&#34;cancellare-una-riga-soltanto&#34;&gt;Cancellare una riga soltanto&lt;/h2&gt;&#xA;&lt;p&gt;Dovevo cancellare la riga contenente questa stringa:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;url: /vecchio/indirizzo/da/cancellare&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Mi è bastato questo comando di &lt;code&gt;sed&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sed -i &lt;span class=&#34;s1&#34;&gt;&amp;#39;/url:/d&amp;#39;&lt;/span&gt; *.md&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;cancellare-una-riga-e-la-successiva&#34;&gt;Cancellare una riga e la successiva&lt;/h2&gt;&#xA;&lt;p&gt;In questo caso la situazione è un po&amp;rsquo; più complessa. Le righe da cancellare erano queste due:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;dsq_thread_id:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  - 123456789&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Come si vede, bisognava cancellare ben due righe. Anche in questo caso &lt;code&gt;sed&lt;/code&gt; mi è stato di prezioso aiuto. Questo programma, tra le sue funzioni, ha proprio quella di cancellare una riga corrispondente a quello che si cerca &lt;em&gt;più la successiva&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Ecco quindi il glorioso comando:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sed -i &lt;span class=&#34;s1&#34;&gt;&amp;#39;/dsq_thread_id/{N;d;}&amp;#39;&lt;/span&gt; *.md&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Anche in questo caso non credo ci sia bisogno di spiegazioni.&lt;/p&gt;&#xA;&lt;p&gt;L&#39;articolo &lt;a href=&#34;https://www.aldolat.it/posts/2022/cancellare-righe-con-sed/&#34;&gt;Cancellare righe con sed&lt;/a&gt; è uno scritto di &lt;a href=&#34;https://www.aldolat.it/&#34;&gt;aldolat.it&lt;/a&gt;. Rispettane le &lt;a href=&#34;https://www.aldolat.it/info/#licenza&#34;&gt;condizioni di licenza&lt;/a&gt;.&lt;/p&gt;</content:encoded>
        </item>
        <item>
            <title>Cambiare una stringa in molti file di testo</title>
            <link>https://www.aldolat.it/posts/2022/cambiare-stringa-molti-file-testo/</link>
            <pubDate>Sun, 03 Apr 2022 16:45:03 +0200</pubDate>
            <author>aldolat@gmail.com (Aldo Latino)</author>
            <guid>https://www.aldolat.it/posts/2022/cambiare-stringa-molti-file-testo/</guid>
            <description>Oggi dovevo modificare tutta una serie di file di testo, cambiando una semplice parola (excerpt:) in un&amp;rsquo;altra (description:). È bastato sed:&#xA;sed -i &amp;#39;s/excerpt:/description:/g&amp;#39; *</description>
            <content:encoded>&lt;p class=&#34;dch3&#34;&gt;O&lt;span class=&#34;allsc&#34;&gt;ggi dovevo&lt;/span&gt; modificare tutta una serie di file di testo, cambiando una semplice parola (&lt;code&gt;excerpt:&lt;/code&gt;) in un&amp;rsquo;altra (&lt;code&gt;description:&lt;/code&gt;). È bastato &lt;code&gt;sed&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sed -i &lt;span class=&#34;s1&#34;&gt;&amp;#39;s/excerpt:/description:/g&amp;#39;&lt;/span&gt; *&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;L&#39;articolo &lt;a href=&#34;https://www.aldolat.it/posts/2022/cambiare-stringa-molti-file-testo/&#34;&gt;Cambiare una stringa in molti file di testo&lt;/a&gt; è uno scritto di &lt;a href=&#34;https://www.aldolat.it/&#34;&gt;aldolat.it&lt;/a&gt;. Rispettane le &lt;a href=&#34;https://www.aldolat.it/info/#licenza&#34;&gt;condizioni di licenza&lt;/a&gt;.&lt;/p&gt;</content:encoded>
        </item>
        <item>
            <title>Togliere la data dal nome del file</title>
            <link>https://www.aldolat.it/posts/2022/togliere-data-nome-file/</link>
            <pubDate>Fri, 01 Apr 2022 21:07:40 +0000</pubDate>
            <author>aldolat@gmail.com (Aldo Latino)</author>
            <guid>https://www.aldolat.it/posts/2022/togliere-data-nome-file/</guid>
            <description>Oggi dovevo rinominare una lunga serie di file, togliendo la data dal loro nome. Questi erano alcuni dei file da rinominare:&#xA;2012-01-14-migrazione-a-nuovo-hosting-completata.md 2012-01-14-segnaibri-al-13-gennaio-2012.md 2012-01-15-jetpack-e-le-statistiche-perse.md 2012-01-19-jetpack-problema-risolto.md 2012-01-20-liberta-e-comunita.md 2012-01-21-antropologia-televisiva.md 2012-01-21-speciale-fcm-su-python-volume-3.md 2012-01-22-cambio-del-nome-del-blog.md 2012-02-04-truecrypt-insicuro-oggi-ancora-no.md Dovevo togliere la parte della data, lasciando solo qualcosa del tipo:&#xA;truecrypt-insicuro-oggi-ancora-no.md Ecco il glorioso comando di rename:&#xA;rename &amp;#39;s/^\d{4}-\d{2}-\d{2}-//g&amp;#39; * Non credo ci sia bisogno di spiegazioni.</description>
            <content:encoded>&lt;p class=&#34;dch&#34;&gt;O&lt;span class=&#34;allsc&#34;&gt;ggi dovevo&lt;/span&gt; rinominare una lunga serie di file, togliendo la data dal loro nome. Questi erano alcuni dei file da rinominare:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2012-01-14-migrazione-a-nuovo-hosting-completata.md&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2012-01-14-segnaibri-al-13-gennaio-2012.md&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2012-01-15-jetpack-e-le-statistiche-perse.md&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2012-01-19-jetpack-problema-risolto.md&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2012-01-20-liberta-e-comunita.md&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2012-01-21-antropologia-televisiva.md&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2012-01-21-speciale-fcm-su-python-volume-3.md&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2012-01-22-cambio-del-nome-del-blog.md&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;2012-02-04-truecrypt-insicuro-oggi-ancora-no.md&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Dovevo togliere la parte della data, lasciando solo qualcosa del tipo:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;truecrypt-insicuro-oggi-ancora-no.md&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ecco il glorioso comando di &lt;code&gt;rename&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rename &lt;span class=&#34;s1&#34;&gt;&amp;#39;s/^\d{4}-\d{2}-\d{2}-//g&amp;#39;&lt;/span&gt; *&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Non credo ci sia bisogno di spiegazioni.&lt;/p&gt;&#xA;&lt;p&gt;L&#39;articolo &lt;a href=&#34;https://www.aldolat.it/posts/2022/togliere-data-nome-file/&#34;&gt;Togliere la data dal nome del file&lt;/a&gt; è uno scritto di &lt;a href=&#34;https://www.aldolat.it/&#34;&gt;aldolat.it&lt;/a&gt;. Rispettane le &lt;a href=&#34;https://www.aldolat.it/info/#licenza&#34;&gt;condizioni di licenza&lt;/a&gt;.&lt;/p&gt;</content:encoded>
        </item>
    </channel>
</rss>
