Das sollte relativ trivial sein, aber ich habe seit einiger Zeit ohne viel Glück versucht. Ich habe ein Verzeichnis mit vielen Verzeichnissen in, jede mit ihrer eigenen Struktur und Dateien.Dateien finden, an Ort und Stelle umbenennen unix bash
Ich bin auf der Suche nach allen .java-Dateien in einem beliebigen Verzeichnis unter dem Arbeitsverzeichnis, und benennen Sie sie in einen bestimmten Namen. Zum Beispiel möchte ich alle Java-Dateien "test.java" nennen.
Wenn die Verzeichnisstruktur ist:
./files/abc/src/abc.java
./files/eee/src/foo.java
./files/roo/src/jam.java
Ich möchte einfach umbenennen:
./files/abc/src/test.java
./files/eee/src/test.java
./files/roo/src/test.java
Natürlich Teil meines Problems ist, dass die Wege haben können Räume in I don. Sie müssen sich keine Gedanken darüber machen, Klassen oder etwas in der Datei umzubenennen, sondern nur den Dateinamen.
Wenn mehr als 1 .java Datei in einem Verzeichnis vorhanden ist, hat es nichts dagegen, wenn es überschrieben wird oder eine Eingabeaufforderung gegeben ist (entweder ist ok, es ist unwahrscheinlich, dass es mehr als 1 gibt in jedem Verzeichnis
Was habe ich versucht.
Blick in mv und finden, aber wenn ich Rohr sie zusammen scheine ich es falsch zu tun, ich möchte sicherstellen, dass sie in ihren aktuellen Standort zu halten und Umbenennen und nicht bewegen
Danke, ich schätze wirklich jede mögliche Hilfe
Wie soll ich das '" $ {1%/*} "/ test.java' Bit lesen? – dumbledad
Die Variable '$ 1','% 'entfernt das kürzeste passende Suffix'/* '- es entfernt den Dateinamen von' $ 1' wie 'dirname' $ 1" 'würde tun. '/ test.java' wird an diesen Verzeichnisnamen angehängt. –