The UNIX and Linux Forums  

Go Back   Die UNIX-und Linux-Foren > Top Foren > UNIX for Dummies Questions & Answers
.
Google unix.com



UNIX for Dummies Questions & Answers Wenn Sie nicht sicher sind, wo Sie eine UNIX-oder Linux-Frage, post it here. Alle UNIX-und Linux-Anfänger willkommen!

Mehr UNIX-und Linux-Forum Themen Vielleicht finden Sie hilfreiche
Faden Thread Starter Forum Antworten Last Post
Dabei Katze rekursiv auf alle Dateien in einem Verzeichnis tulip Shell Programmierung und Scripting 11 05-21-2009 06:24 PM
rekursiv das Umbenennen von Dateien catgovind UNIX for Dummies Questions & Answers 2 08-20-2008 03:50 AM
Benennen Sie die Datei im Batch reldb UNIX für Fortgeschrittene und Experten 7 01-14-2008 06:43 PM
umbenennen im Batch kathy18 Shell Programmierung und Scripting 3 03-09-2005 09:47 AM
Liste Dateien rekursiv roberthawke UNIX for Dummies Questions & Answers 9 06-24-2002 07:19 PM

Reply
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Suche diesen Thread Rate Thread Anzeige-Modi
  #1 (permalink)  
Old 06-26-2009
.. Chris .. ..Chris.. is offline
Registrierte Nutzer
  
 

Join Date: Jun 2009
Beiträge: 4
Exclamation Batch rename rekursiv

Ich möchte die Ersetzung multipler unterstreicht mit Bindestrich, aber ich habe 26.000 Dateien umbenennen. Sie sind alle in einer Datei und mehrere Unterverzeichnisse.

Es wäre viel einfacher, wenn ich ein Skript zu tun. Hier sind einige Beispiele für die Datei-Namen:

Beispiel 1
books/horrors/small/books_horrors_small_0000000386.jpg

Benennen Sie die

books/horrors/small/books-horrors-small-0000000386.jpg

Beispiel 2
books/comedy/small/books_comedy_small_0000001687.jpg

Benennen Sie die

books/comedy/small/books-comedy-small-0000001687.jpg

Es gibt 26000 Dateien, die sich similer zu, und sind alle in unterschiedlichen Verzeichnissen.

Das einzige, was ich tun müssen, ist zu ersetzen alle Unterstriche _ mit Bindestrich --
  #2 (permalink)  
Old 06-26-2009
rakeshawasthi rakeshawasthi is offline
Registrierte Nutzer
  
 

Join Date: Aug 2004
Ort: Indien
Beiträge: 379
Haben Sie etwas? Sie sollten mindestens.
Das folgende Code funktioniert, aber Sie versuchen zu schreiben, die for-Schleife für diese, mindestens.

Code:
 sed 's/_/-/g'

  #3 (permalink)  
Old 06-26-2009
ghostdog74 ghostdog74 is offline Forum Advisor  
Registrierte Nutzer
  
 

Join Date: Sep 2006
Beiträge: 2557

Code:
awk 'BEGIN{
    q="\047"
    path="/path/to/search"
    cmd="find "path" -type f -name \"*_*.jpg\""
    while(( cmd|getline f )>0){
        m=split(f,file,"/")
        gsub(/_/,"-",file[m])
        newfilename = join(file,1,m,"/")            
        mv = "mv "q f q" "q newfilename q
        print mv
        #system(mv) #uncomment to use                     
        close(mv)
    }
    close(cmd)
}
function join(array, start, end, sep,    result, i)
{
         if (sep == "") sep = " "
         else if (sep == SUBSEP) sep = ""
         result = array[start]
         for (i = start + 1; i <= end; i++)
             result = result sep array[i]
         return result
}'


Zuletzt bearbeitet von ghostdog74; am 06-26-2009 03:17 AM..
  #4 (permalink)  
Old 07-01-2009
.. Chris .. ..Chris.. is offline
Registrierte Nutzer
  
 

Join Date: Jun 2009
Beiträge: 4
Batch File Rename rekursiv - Brilliant, jetzt, wie die zu den Verzeichnisnamen?

ghostdog74 Lösung unten ist brillant und hat gut funktioniert.

Follow-up-Frage:

Wie kann man die genau die gleiche Sache, sondern nur auf die Datei, Ordner-Datei in diesem Ordner Baum (rekursiv)?

DougABC123


Zitat:
Zitat von ghostdog74 View Post
Code:
awk 'BEGIN{
    q="\047"
    path="/path/to/search"
    cmd="find "path" -type f -name \"*_*.jpg\""
    while(( cmd|getline f )>0){
        m=split(f,file,"/")
        gsub(/_/,"-",file[m])
        newfilename = join(file,1,m,"/")            
        mv = "mv "q f q" "q newfilename q
        print mv
        #system(mv) #uncomment to use                     
        close(mv)
    }
    close(cmd)
}
function join(array, start, end, sep,    result, i)
{
         if (sep == "") sep = " "
         else if (sep == SUBSEP) sep = ""
         result = array[start]
         for (i = start + 1; i <= end; i++)
             result = result sep array[i]
         return result
}'
Reply

Lesezeichen

Tags
Stapel-Umbenennung ersetzt _ --

Thread Tools Suche diesen Thread
Suche diesen Thread:

Erweiterte Suche
Anzeige-Modi Rate this thread
Rate this thread:

Forumregeln
Du möglicherweise nicht neue Themen
Du möglicherweise nicht nach Antworten
Du möglicherweise nicht post-Anlagen
Du möglicherweise nicht bearbeiten Sie Ihre Beiträge

BB-Code ist Auf
Smilies sind Auf
[IMG] Code Auf
HTML-Code ist Aus
Trackbacks sind Auf
Pingbacks sind Auf
Refbacks sind Auf




Alle Zeiten sind GMT -4. Es ist jetzt 04:08 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Ltd. Sprachliche Übersetzungen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Die UNIX-und Linux-Foren Content © Copyright 1993-2009. Alle Rechte Reserved.Ad Management von RedTyger

Content Relevant URLs durch vBSEO 3.2.0