[linux-l] zsh besser mit andere Sprache

Oliver Bandel oliver at first.in-berlin.de
So Okt 9 13:53:15 CEST 2005


On Sat, Oct 08, 2005 at 12:59:19PM +0200, Ivan Villanueva wrote:
> Hallo ML,
> ich will ein Script schreiben, um etwas mit Bilder zu machen. Die erste Frage
> ist, in welche Sprache ?. Ich kenne nur Java aber für kleine Scripts ist nicht
> das beste. Also ich habe ein bissen von Pythons Doku gelesen, aber ich habe
> nicht mal gefunden, wie ich die Ausgabe eines Befehls ablesen kann. Dann habe
> ich in der Doku von meinem Shell, die zsh, schnell gefunden, was ich brauche:
> 
> for f in "${(f)$(find . -maxdepth 2)}" ; do
>     fileType=$(file $f)
[...]

Warum nicht das Filetype-Testen gleich mit dem find erledigen?

find . -type f

bringt Dir schon mal die normalen Files. Das spart Dir dann
schon etwas von der Scripterei.

find . -maxdepth 2 -type f -exec file {} \;

macht Dir auch gleich den Aufruf von "file".

Muß man also garnicht sooo viel immer drum herum bauen.
find ist schon 'n feines Tool. :)

Naja, und für den Rest kannste dann ja noch Perl nehmen...

... oder sogar OCaml. :)


Ciao,
   Oliver

P.S.: Mögliche Lösung in OCaml:

===================================================
open Unix

let re = Str.regexp_case_fold ".*image"


let string_begin str =
  let idx = String.index str ':'
  in
    String.sub str 0 idx


let _ =
  let chan = open_process_in "find . -maxdepth 1 -type f -exec file {} \\; "
  in
    try
      while true do
        let line = (input_line chan); 
        in
          let filename = (string_begin line) in
          if Str.string_match re line 0
          then
            begin
              print_endline line;
              print_endline filename
              (* do something ith the file (via Sys.command oder open_process_in oder so) *)
            end
          else
            begin
              (* dise Dateien nicht benutzen... *)
              print_string "DO NOT USE: ";
              print_endline line
            end
      done
    with End_of_file -> ()
===================================================

Mag in anderen Sprachen für so kleine Sachen mit weniger Code gehen,
aber sollte das Script doch mal zu einem Programm heranwachsen...
... naja, ihr kennt ja meine Meinung bzgl. OCaml.  :)

__END__




Mehr Informationen über die Mailingliste linux-l