Vous mentionnez un fichier de commandes, ce qui signifie probablement que vous êtes sous Windows (je suppose que vous faites référence à un fichier .bat). Si vous êtes sur un système unix, donner un coup de feu ce:
find . -mindepth 2 -type f -exec sh -c "mv {} \`dirname {}\`/\`dirname {} | sed 's/^\.//' | sed 's/\///g'\`\`basename {}\`" \;
Sinon, ce programme Python 3 peut faire l'affaire (devrait également fonctionner sous Windows ...):
#!/usr/bin/env python3.0
import os
import sys
def raise_error(e):
raise e
def full_split(path):
head, tail = os.path.split(path)
if head:
return full_split(head) + [tail]
return [tail]
def main(args):
if len(args) != 1:
print("Please specify one target directory", file=sys.stderr)
sys.exit(1)
os.chdir(args[0])
for dirpath, _, filenames in os.walk('.', onerror=raise_error):
for f in filenames:
old = os.path.join(dirpath, f)
new = os.path.join(dirpath, ''.join(full_split(dirpath[2:]) + [f]))
os.rename(old, new)
if __name__ == '__main__':
main(sys.argv[1:])
Le mise en page de répertoire avant:
.:
Abc Def
./Abc:
Foo2.bar Foo.bar
./Def:
Baz2.quux Baz.quux Ghi
./Def/Ghi:
Bar2.foo Bar.foo
La mise en page du répertoire après:
.:
Abc Def
./Abc:
AbcFoo2.bar AbcFoo.bar
./Def:
DefBaz2.quux DefBaz.quux Ghi
./Def/Ghi:
DefGhiBar2.foo DefGhiBar.foo
Pourquoi ce retagged pas la programmation liée? –
Il a probablement été étiqueté comme n'étant pas lié à la programmation parce que vous semblez juste être à la recherche de logiciels existants pour accomplir une tâche et n'avez pas l'intention de faire vous-même la programmation. –
vous pouvez supprimer le tag si vous ne l'aimez pas. – inspite