2016-03-29 18 views
-1

Ich habe die folgende Dateistruktur:Suchen und Ersetzen von Dateien und Ordnernamen

. 
├── data 
│ └── test_sample.txt 
└── demo_test 
    ├── data.php 
    ├── index_test.php 
    └── Test.php 

Ich will ‚test‘ mit ‚Demo‘ ersetzen. Die endgültige Dateistruktur lautet

. 
├── data 
│ └── demo_sample.txt 
└── demo_demo 
    ├── data.php 
    ├── index_demo.php 
    └── Test.php 

Wie kann ich dies über ein Shell-Skript erreichen.

Vielen Dank im Voraus.

+0

mit sed-Befehl, aber das geht nur in die Datei, ändert sich nicht den Dateinamen – Ajinkya

Antwort

1

Sie müssen es in zwei Phasen tun:

  1. Benennen Sie die Verzeichnisse
  2. Benennen Sie die Dateien


cd yourDir 
find . -type d -name "*test*" | while read f; do mv $f $(echo $f | sed 's/test/demo/'); done 
find . -type f -name "*test*" | while read f; do mv $f $(echo $f | sed 's/test/demo/'); done 

Finden listet alle Dateien und Verzeichnisse, passt "test" an Wir verarbeiten dann die Ausgabe der Kommandozeile nach Zeile