ubuntuusers.de

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:

Inhaltsverzeichnis
  1. Bash
  2. Ruby
  3. Python
  4. Perl

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 11. März 2013 02:01 von Lasall erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Programmierung