staging.inyokaproject.org

Rekursive Dateiliste

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Im folgenden findet man Skripte bzw. Einzeiler in verschiedenen Programmiersprachen, um alle Dateien zu finden, die in einem Verzeichnis und dessen Unterverzeichnissen, liegen. Für die Beispiele werden alle HTML-Dateien unter /usr/share/doc gesucht.

Die Dateien für die Skripte müssen gegebenfalls mit einem Editor[2] erstellt und dann ausführbar[3] gemacht werden.

Bash

In der Bash ist das find-Kommando hilfreich. Die Option name nimmt als einen Parameter einen Shell-Glob an.

find /usr/share/doc/ -name "*.html" 

Alternativ kann man die Shelloptionen extglob und globstar aktivieren und zum Auflisten der Dateien ausschließlich die Shell nutzen:

Optionen setzen:

shopt -s extglob globstar 

Dateien auflisten:

ls /usr/share/doc/**/*.html 

Ruby

In Ruby gibt es die Klassenmethode Dir.glob. Im Parameterstring für Dir.glob steht ** für einen beliebigen Pfad, ansonsten werden die Zeichen * und ? wie in der Shell behandelt: ? bedeutet ein beliebiges Zeichen * bedeutet kein oder mehrere beliebige Zeichen

Dir.glob gibt ein Array mit den passenden Dateinamen zurück.

1
2
3
4
5
dateien = Dir.glob('/usr/share/doc/**/*.html')

dateien.each { |datei|
   puts datei
}

kürzer geht es übrigens mit:

1
puts Dir.glob('/usr/share/doc/**/*.html') * "\n"

Python

Funktioniert ähnlich wie bei Ruby. In diesem Fall aber mit dem glob-Modul:

1
2
3
import glob

print glob.glob("/usr/share/doc/**/*.html")

Perl

In Perl wird hierfür z.B. das Modul File::Find verwendet.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
#!/usr/bin/perl

use strict;
use warnings;

use File::Find;
find(\&handle_file, '/usr/share/doc/');
exit;

sub handle_file {
  print $_, "\n" if /.*\.html/;
}

Diese Revision wurde am 21. Juli 2025 17:36 von kB erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Programmierung