Создание папок и подпапок из файла csv / txt

Не тот ответ, который вы просили, но если вы создадите свой собственный файл подходящего размера, вставьте его в свой процесс, а затем выполните вычисления в этом В адресном пространстве он должен иметь тот же эффект, что и файл подкачки, и у вас гарантированно будет место, в отличие от конкуренции с другими процессами за доступную оперативную память / подкачку.

Это также может быть медленнее, в зависимости от того, как часто вы перезаписываете данные, но должно быть намного более переносимым.

1
21.11.2018, 00:35
2 ответа

Con la entrada que proporcionó, pude lograr esto con el siguiente comando

while read -r dir; do mkdir -p./"$dir"; done< <(sed 's@ > @/@g' input)

Puede reemplazar ./con la ruta del directorio en el que desea que comience el árbol de directorios, si no es el directorio actual.

Esto usa sedpara convertir sus líneas de entrada de algo como:

ALFA ROMEO > 147 > Scheinwerferblenden

a:

ALFA ROMEO/147/Scheinwerferblenden

Luego envía esta salida a un ciclo while que usa mkdir -ppara crear el árbol de directorios.

$ cat input
ALFA ROMEO > 147 > Scheinwerferblenden
ALFA ROMEO > 156 > Scheinwerferblenden
ALFA ROMEO > 156 > Kühlergrill
AUDI > 80 B3 > Heckspoiler
$ while read -r dir; do mkdir -p./"$dir"; done< <(sed 's@ > @/@g' input)
$ tree
.
├── ALFA\ ROMEO
│   ├── 147
│   │   └── Scheinwerferblenden
│   └── 156
│       ├── K\303\274hlergrill
│       └── Scheinwerferblenden
├── AUDI
│   └── 80\ B3
│       └── Heckspoiler
└── input

9 directories, 1 file
1
27.01.2020, 23:44

Pruebe esto, según su entrada (usandoexpansiones de parámetros bash):

while IFS=">" read -r c1 c2 c3; do
    c2=${c2% }
    mkdir -p "${c1% }/${c2# }/${c3# }"
done < file-or-input

Salida:

$ tree AUDI ALFA\ ROMEO/
AUDI
└── 80 B3
    └── Heckspoiler
ALFA ROMEO/
├── 147
│   └── Scheinwerferblenden
└── 156
    ├── Kühlergrill
    └── Scheinwerferblenden

7 directories, 0 files
0
27.01.2020, 23:44

Теги

Похожие вопросы