henry: Linux rename

Hallo, ich darf es gar nicht sagen ... ich habe Probleme mit "rename" in der shell

alter Dateiname(n) z_kldfjsladkfjslkdfj

neuer Dateiname(n) t1_kldfjsladkfjslkdfj

rename 's/^z_/t1_/g' *

oder

rename 'z_' '' 't1_'

bringt keinen Erfolg .... was mache ich falsch .... ich sehe es nicht ???????

Danke

  1. Tach!

    rename 's/^z_/t1_/g' *
    
    oder
    
    rename 'z_' '' 't1_'
    

    bringt keinen Erfolg .... was mache ich falsch .... ich sehe es nicht ???????

    Du musst es so anwenden, wie es erforderlich ist, nicht so wie du es denkst und vielleicht anderswo gewohnt bist. rename hat seine eigene Syntax.

    rename erwartet mindestens drei Parameter. Das ist in dem Befehl rename 'z_' '' 't1_'zwar gegeben, aber der ist sinnlos. Die Datei t1_ enthält kein z_, das durch Leerstring ersetzt werden kann.

    Der erste Parameter ist der Suchausdruck, das was du im Namen geändert haben möchtest. Der zweite ist die Ersetzung, der dritte (und folgende) muss nach Auflösen der Jokerzeichen eine oder mehrere Dateinamen ergeben.

    alter Dateiname(n) z_kldfjsladkfjslkdfj

    neuer Dateiname(n) t1_kldfjsladkfjslkdfj

    So kann ein Schuh draus werden:

    rename z_ t1_ z_*
    

    Ersetze z_ mit t1_ in den Dateien, die mit z_ anfangen.

    dedlfix.

    1. rename 's/^z_/t1_/g' *
      
      oder
      
      rename 'z_' '' 't1_'
      

      rename erwartet mindestens drei Parameter.

      Dann hast du ein anderes rename. Unter Debian erwartet rename eine nicht näher beschriebenes perlexp mit dem Ersetzbefehl sowie üblicherweise die betreffenden Dateinamen. man rename erzähtl dazu dieses (etwas gekürzt):

      SYNOPSIS
         rename [-…] perlexpr [ files ]
      
      DESCRIPTION
         "rename" renames the filenames supplied according to the rule specified as the first argument.
         […]
      
         For example, to rename all files matching "*.bak" to strip the extension, you might say
      
                 rename 's/\e.bak$//' *.bak
      
         To translate uppercase names to lower, you'd use
      
                 rename 'y/A-Z/a-z/' *
      
      1. Tach!

        rename erwartet mindestens drei Parameter.

        Dann hast du ein anderes rename. Unter Debian erwartet rename eine nicht näher beschriebenes perlexp mit dem Ersetzbefehl sowie üblicherweise die betreffenden Dateinamen.

        Mein rename unter CentOS sieht (etwas gekürzt) so aus:

        NAME
               rename - rename files
        
        SYNOPSIS
               rename [options] expression replacement file...
        
        DESCRIPTION
               rename will rename the specified files by replacing the first occurrence of expression in their name by replacement.
        
        OPTIONS
               [...]
        
        EXAMPLES
               Given the files foo1, ..., foo9, foo10, ..., foo278, the commands
        
                      rename foo foo0 foo?
                      rename foo foo0 foo??
        
               will turn them into foo001, ..., foo009, foo010, ..., foo278.  And
        
                      rename .htm .html *.htm
        
               will fix the extension of your html files.
        
        WARNING
               [...]
        
        SEE ALSO
               mmv(1), mv(1)
        
        AVAILABILITY
               The rename command is part of the util-linux package and is available from ftp://ftp.kernel.org/pub/linux/utils/util-linux/.
        

        dedlfix.

        1. Hallo,

          rename z_ t1_ z_*
          

          so gehts ... wo habe ich da wieder hingesehen.

          Danke

          1. rename z_ t1_ z_*
            

            Man sollte noch darauf hinweisen, dass die Länge der Argumentliste begrenzt ist. Das geht also nicht in jedem Fall. Lösungen.