AppsolutasJekyll v2.5.22015-01-22T02:08:08+01:00http://www.appsolutas.de/Appsolutashttp://www.appsolutas.de/info@appsolutas.deList number and size of files per directory in linuxhttp://www.appsolutas.de/tipps/linux/find-number-of-files2014-12-20T19:13:12+01:002014-12-20T19:13:12+01:00http://www.appsolutas.de<p>From time to time you might want to know which directories are particularly large or contain a vast number of files. For that purpose one can use graphical tools such as <a href="http://www.marzocca.net/linux/baobab/">Disk Usage Analyzer</a> (Gnome) or <a href="http://utils.kde.org/projects/filelight/">Filelight</a> (KDE). In case, we mainly work on the command line we may want to get along without graphical tools.</p>
<h2 id="list-file-size">List file size</h2>
<p>For the detection of large data sets following command can be used:</p>
<div class="highlight"><pre><code class="language-bash" data-lang="bash">du -hd1 <span class="p">|</span> sort -h</code></pre></div>
<p>As output, you get a list of subdirectories in the current directory and the amount of data in the respective directories, including all subdirectories. The list is sorted by size.</p>
<p>In detail: the command <code>du</code> (disc usage) determines the disc usage of all first level sub directories (<code>-d1</code>) and returns the size in Byte, Kilobyte,… (<code>-h</code>). Piping the output to <code>sort -h</code> sorts the results according to their size. </p>
<h2 id="list-number-of-files">List number of files</h2>
<p>A list, similar to the file sizes, can be obtained to check how many files are stored in a directory with the following command:</p>
<div class="highlight"><pre><code class="language-bash" data-lang="bash">find . -xdev -type f <span class="p">|</span> cut -d <span class="s2">"/"</span> -f 1,2 <span class="p">|</span> sort <span class="p">|</span> uniq -c <span class="p">|</span> sort -n</code></pre></div>
<p>The output lists the number of files contained in a directory, including subdirectories, sorted by number of files.</p>
<p>In detail: the command <code>find</code> finds all files (<code>-type f</code>) within the current directory and on the same drive (<code>-xdev</code>) and returns a list of all files with full path. Piping the list to <code>cut -d "/" -f 1,2</code> strips everything but the first directory from that list, by cutting every entry at “/” and just keep the first and second fields <code>(-f 1,2)</code>. Piping to sort and to uniq finds unique entries and counts them (<code>-c</code>). The resulting list is piped again to sort by number (<code>-n</code>).</p>
<p><a href="http://www.appsolutas.de/tipps/linux/find-number-of-files/">List number and size of files per directory in linux</a> was originally published by at <a href="http://www.appsolutas.de">Appsolutas</a> on December 20, 2014.</p>Anzahl und Größe von Dateien auflistenhttp://www.appsolutas.de/tipps/linux/anzahl-von-dateien-auflisten2014-12-20T19:12:32+01:002014-12-20T19:12:32+01:00http://www.appsolutas.de<p>Ab und an möchte man vielleicht gerne wissen in welchen Verzeichnissen sich besonders große oder besonders viele Dateien verstecken und gegebenenfalls welche löschen. Dazu können graphische Tools wie der <a href="http://www.marzocca.net/linux/baobab/">Disk Usage Analyzer</a> (Gnome) oder <a href="http://utils.kde.org/projects/filelight/">Filelight</a> (KDE) benutzt werden. Als Freund der Kommandozeile wollen oder müssen wir auch ohne graphische Tools klar kommen.</p>
<h2 id="dateigren-auflisten">Dateigrößen auflisten</h2>
<p>Für das Aufspüren großer Datenmengen kann folgender Befehl benutzt werden:</p>
<div class="highlight"><pre><code class="language-bash" data-lang="bash">du -hd1 <span class="p">|</span> sort -h</code></pre></div>
<p>Als Ausgabe bekommt man eine Liste der Unterverzeichnisse des aktuellen Verzeichnis und das Datenaufkommen in den jeweiligen Verzeichnissen, inklusive aller Unterverzeichnisse. Die Liste ist nach Größe sortiert.</p>
<p>Im Detail: der Befehl <code>du</code> (disc usage) gibt das Datenvolumen in den Unterverzeichnissen der ersten Ebene (<code>-d1</code>) im aktuellen Verzeichnis zurück und formatiert die Größenangaben in Byte, Kilobyte,… (<code>-h</code>). Per Pipe wird die Liste an <code>sort -h</code> übergeben, womit eine Sortierung nach Größe vorgenommen wird.</p>
<h2 id="anzahl-der-dateien-auflisten">Anzahl der Dateien auflisten</h2>
<p>Eine ähnliche Liste, wie für die Dateigrößen erhalten wir für das Aufspüren der Anzahl von Dateien mit folgendem Befehl:</p>
<div class="highlight"><pre><code class="language-bash" data-lang="bash">find . -xdev -type f <span class="p">|</span> cut -d <span class="s2">"/"</span> -f 1,2 <span class="p">|</span> sort <span class="p">|</span> uniq -c <span class="p">|</span> sort -n</code></pre></div>
<p>Die Ausgabe listet die Anzahl der Dateien, die in einem Verzeichniss, samt Unterverzeichnissen, enthalten sind sortiert nach der Anzahl auf. </p>
<p>Im Detail: der Befehl <code>find</code> findet alle Dateien (<code>-type f</code>) im aktuellen Verzeichnis und dessen Unterverzeichnissen die sich auf dem gleichen Datenträger befinden (<code>-xdev</code>) und gibt eine Liste aller Dateien mit voller Pfadangabe zurück. Diese Liste wird per Pipe an <code>cut -d "/" -f 1,2</code> übergeben und alles ausser den ersten beideb Verzeichnissen abgetrennt, indem jeder Eintrag der Liste an “/” aufgetrennt wird und nur die ersten zwei Felder <code>(-f 1,2)</code> behalten werden. Diese Liste wird weitergeleitet und zunächst mit <code>sort</code> sortiert, anschließend mit <code>uniq</code> nach gleichen Einträgen durchsucht und diese gezählt (<code>-c</code>). Die resultierende Liste wird noch einmal nach der Anzahl der gefundenenen Einträge sortiert (<code>-n</code>).</p>
<h2 id="update">Update</h2>
<p>Ürsprünglich wurde für das Auflisten der Anzahl von Dateien untenstehender Befehl verwendet. Allerdings ist der Ausdruck gegenüber dem jetzigen etwa doppelt so langsam. </p>
<div class="highlight"><pre><code class="language-bash" data-lang="bash">find -maxdepth <span class="m">1</span> -xdev -type d <span class="p">|</span> <span class="k">while</span> <span class="nb">read</span> -r dir<span class="p">;</span> <span class="k">do</span> <span class="nb">printf</span> <span class="s2">"%s:\t"</span> <span class="s2">"$dir"</span><span class="p">;</span> find <span class="s2">"$dir"</span> <span class="p">|</span> wc -l<span class="p">;</span> <span class="k">done</span> <span class="p">|</span> sort -k2 -n</code></pre></div>
<p><a href="http://www.appsolutas.de/tipps/linux/anzahl-von-dateien-auflisten/">Anzahl und Größe von Dateien auflisten</a> was originally published by at <a href="http://www.appsolutas.de">Appsolutas</a> on December 20, 2014.</p>