Conversione di nomi di file con barre rovesciate incorporate nell'albero delle directory

0

Recentemente ho estratto un file ZIP che prevedevo contenesse una gerarchia di percorsi, ma si è rivelato essere un archivio semplice di file con barre rovesciate nei nomi dei file. Così ho finito con qualcosa di simile:

$ ls -1d ./*
SomeFile.txt
Foo\OtherFile.png
Bar\Baz\Faz\foo.txt

Tutti questi sono solo fratelli nella stessa directory singola. Nel mio caso, ci sono diverse centinaia di file, quindi rendere le directory e spostare le cose manualmente sarebbe noioso al massimo.

Il mio piano attuale è scrivere un piccolo programma Python per metterli tutti a cui appartengono, ma mi stavo chiedendo, c'è un modo più rapido per farlo dalla riga di comando?

    
posta amacleod 14.03.2014 - 16:26
fonte

1 risposta

1

Python in soccorso!

#!/usr/bin/env python
import sys, os, os.path

def treeify(filenames):
    for fn in filenames:
        parts = fn.split("\")
        pathparts = parts[:-1]
        basename = parts[-1]
        path = ensurepath(pathparts)
        os.rename(fn, os.path.join(path, basename))

def ensurepath(parts):
    if len(parts) == 0:
        return "."
    path = os.path.join(*parts)
    if not os.path.exists(path):
        os.makedirs(path)
    return path

if __name__ == "__main__":
    treeify(sys.argv[1:])

Invocato come:

$ ~/scripts/tree.py *
    
risposta data 14.03.2014 - 16:46
fonte

Leggi altre domande sui tag