2012-03-25 17 views

Antwort

1

Wenn der einzige Platz auf dem Weg in dem Namen des Zielverzeichnisses ist, könnte man mit so etwas wie diesem weg.

find -type d -name '* (*)' -print | 
while read path grade; do 
    mv "$path $grade" "$path" 
    grad=${grade%\)} 
    touch "$path/${grad#\(}".grade 
done 
1

Es auf einem einzigen Dateinamen einfach ist:

grade=${file#*(}; grade=${grade%)} 
code=${file% (*)} 
mv -- "$file" "$code" 
>> "$code/$grade.grade" 

Damit für jede Datei tun: Statt touch file,

find . -type d -name '* (*)' -exec sh -c ' 
    for file 
    do 
     code from above goes here 
    done 
' -- {} + 

(Sie meine Nutzung von >> file nicht nur etwas dagegen, Spar einige CPU-Zyklen.)

Verwandte Themen