Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.
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.
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
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" |
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") |
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/; } |