Im Prinzip sollte sowas gehen:
| find . -maxdepth 1 -type d -name "[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]" -execdir mv -Tv {} {}_K \;
|
Oder allein mit der Bash:
| for d in [0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]/
do
mv -vT "$d" "${d%%/}_K"
done
|
Wenn man das Umbenennen rekursiv auf einen Verzeichnisbaum anwenden wollte, müsste man mit der untersten Ebene anfangen und sich dann zur Wurzel hocharbeiten (sonst verschiebt man den Ast auf dem man gerade sitzt) - das ginge z.B. mit rekursiven Aufrufen einer Funktion:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 | #!/bin/bash
shopt -s nullglob
function recurse_and_rename {
local d
for d in */
do
pushd "$d"
recurse_and_rename
popd
done
for d in [0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]/
do
mv -vT "$d" "${d%%/}_K"
done
}
for n
do
pushd "$n"
recurse_and_rename
popd
done
|
Dem Skript übergibt man dann das oder die Wurzelverzeichnisse als Argument(e).