aus dem aktuellen Verzeichnis Strippe ich mehrere Unterverzeichnisse habe:jedes Unterverzeichnis Gehen Sie in und Masse Dateien umbenennen, indem führende Zeichen
subdir1/
001myfile001A.txt
002myfile002A.txt
subdir2/
001myfile001B.txt
002myfile002B.txt
, wo ich jedes Zeichen aus den Dateinamen entfernen lassen möchte, bevor myfile
so dass ich mit
subdir1/
myfile001A.txt
myfile002A.txt
subdir2/
myfile001B.txt
myfile002B.txt
ich einen Code haben, dies zu tun ...
#!/bin/bash
for d in `find . -type d -maxdepth 1`; do
cd "$d"
for f in `find . "*.txt"`; do
mv "$f" "$(echo "$f" | sed -r 's/^.*myfile/myfile/')"
done
done
jedoch die neu umbenannten Dateien enden im Stammverzeichnis nach oben
heißt
myfile001A.txt
myfile002A.txt
myfile001B.txt
myfile002B.txt
subdir1/
subdir2/
, in dem die Unterverzeichnisse sind nun leer.
Wie ändere ich mein Skript, um die Dateien umzubenennen und sie in ihren jeweiligen Unterverzeichnissen zu behalten? Wie Sie die erste Schleife ändert Verzeichnis in das Unterverzeichnis sehen können so nicht sicher, warum die Dateien ein Verzeichnis immer geschickt am Ende ...
ich für die Auswahl der richtigen Antworten verdorben wurde, aber dieses war so gründlich, und wies darauf hin, was ich da einige Best Practices falsch als auch tat. Vielen Dank! – brucezepplin