Suchen Sie nach Dateien, benennen Sie sie in unix bash um

8

Das sollte relativ trivial sein, aber ich habe seit einiger Zeit ohne viel Glück versucht. Ich habe ein Verzeichnis mit vielen Verzeichnissen, jedes mit einer eigenen Struktur und Dateien.

Ich suche alle .java-Dateien in einem beliebigen Verzeichnis unter dem Arbeitsverzeichnis und benenne sie in einen bestimmten Namen um. Zum Beispiel möchte ich alle Java-Dateien "test.java" nennen.

Wenn die Verzeichnisstruktur ist:

%Vor%

Ich möchte einfach umbenennen in:

%Vor%

Natürlich ist ein Teil meines Problems, dass die Pfade Leerzeichen enthalten können. Ich muss mir keine Sorgen darüber machen, Klassen oder irgendetwas in der Datei umzubenennen, nur den Dateinamen an Ort und Stelle.

Wenn mehr als eine .java Datei in einem Verzeichnis vorhanden ist, macht es mir nichts aus, wenn es überschrieben wird oder eine Eingabeaufforderung erscheint (entweder ist ok, es ist unwahrscheinlich, dass es mehr als 1 in gibt jedes Verzeichnis.

Was ich versucht habe:

Ich schaue in mv und finde, aber wenn ich sie zusammen schiebe, scheine ich es falsch zu machen, ich möchte sicherstellen, dass sie an ihrem aktuellen Ort bleiben und umbenennen und nicht bewegen.

Danke, ich schätze jede Hilfe sehr.

    
ThePerson 21.02.2013, 16:14
quelle

2 Antworten

21

Die GNU-Version von find hat eine -execdir -Aktion, die das Verzeichnis in den Speicherort der Datei ändert.

%Vor%

Wenn Ihre Version von find -execdir nicht unterstützt, können Sie den Auftrag mit:

erledigen %Vor%     
John Kugelman 21.02.2013, 16:18
quelle
5

Wenn Ihr find -Befehl (wie meiner) -execdir nicht unterstützt, versuchen Sie Folgendes:

%Vor%     
dogbane 21.02.2013 16:23
quelle

Tags und Links