2015-02-03 10 views
13

IEntfernen von Bündel von Dateinamen mit Cut ersten n Zeichen

ls | cut -c 5-

bin mit diesem zurückgibt eine Liste der Dateinamen im Format i sie will, führt aber nicht tatsächlich die Aktion . Bitte beraten.

+0

Führen Sie welche Aktion durch? Benennen Sie die Dateien um? –

+0

@EtanReisner Entfernen der ersten 5 Zeichen aus den Dateinamen. –

+0

Es entfernt sie von der Ausgabe. Ich nehme an, du meinst sie aus den Dateinamen für die Dateien zu entfernen ... also alle Dateien im Verzeichnis umzubenennen? –

Antwort

2

So etwas sollte funktionieren:

for x in *; do 
    echo mv $x `echo $x | cut -c 5-` 
done 

Beachten Sie, dass diese zerstörerisch sein könnte, so dass es auf diese Weise laufen zuerst, und dann entfernen Sie das führende echo wenn Sie sicher sind, dass es das tut, was Sie wollen.

+1

Wird das erste 'echo' entfernt und wie geschrieben, würde das nicht ohne Fehler funktionieren, wenn das Verzeichnis nur Dateien ohne Leerzeichen im Namen enthält und mindestens 6 Zeichen lang ist? Während das Doppeln von "$ x" und Verwenden von "$ (..)" anstelle der herkömmlichen Verwendung von Back-Ticks einen Dateinamen mit Leerzeichenfehlern annehmen würde, würde sich jedoch nicht allein um alle Fehler kümmern, die geworfen werden könnten, z. wenn ein Dateiname nur 5 Zeichen lang ist oder Verzeichnisse vorhanden sind. – user3439894

20
rename -n 's/(.{5})(.*)$/$2/' *.* 

Die ist für die Simulation; entfernen Sie es, um das tatsächliche Ergebnis zu erhalten.

13

können Sie den folgenden Befehl verwenden, wenn Sie in den Ordner, wo Sie die Umbenennung vornehmen möchten:

rename -n -v 's/^(.{5})//' * 

-n ist für keine Aktion und -v zu zeigen, was die Veränderungen sein. Wenn Sie mit den Ergebnissen zufrieden sind, können Sie beide entfernen

rename 's/^(.{5})//' * 
Verwandte Themen