0 votos

Conversión de nombres de archivo con barras invertidas incrustadas en el árbol de directorios

Hace poco extraje un archivo ZIP que esperaba que contuviera una jerarquía de rutas pero resultó ser un archivo plano de ficheros con barras invertidas en los nombres de los ficheros. Así que terminé con algo como:

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

Todos ellos son hermanos en el mismo directorio. En mi caso real, hay varios cientos de archivos, por lo que hacer los directorios y mover las cosas a mano sería tedioso en el mejor de los casos.

Mi plan actual es escribir un pequeño programa en Python para ponerlos todos en su sitio, pero me preguntaba si hay una forma más rápida y sencilla de hacerlo desde la línea de comandos.

1voto

boudiccas Puntos 8

¡Python al rescate!

#!/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:])

Invocada como:

$ ~/scripts/tree.py *

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X