Создайте Папку на основе первой части имени файла

У меня есть много файлов в папке с этой структурой:

Client1.Date.1.log
Client1.Date.2.log
Client1.Date.3.log
Client2.Date.1.log
Client2.Date.2.log
Client2.Date.3.log

и так далее.

У меня есть больше чем 14 000 файлов. Я должен сделать папку для каждого Клиента и переместить все файлы в корректную Клиентскую Папку. Я нахожусь на сервере Ubuntu 18,04 терминалов. Какая-либо идея?

-1
задан 13 January 2020 в 23:07

2 ответа

Можно удалить самый длинный запаздывающий "точечный суффикс" строки в переменной f использование расширения параметра оболочки ${f%%.*}

Так, например,

for f in *.log; do mkdir -p "${f%%.*}" && mv --no-clobber -- "$f" "${f%%.*}"/; done

Я предложил бы делать резервную копию Ваших данных сначала, на всякий случай они не делают то, что Вы ожидаете

0
ответ дан 19 January 2020 в 09:14

Вот сценарий Python для перемещения файлов от текущей папки до клиентских подпапок.

import os

# Finding files in given format in current directory
files = [fname for fname in os.listdir(".")
         if fname.count(".") == 3 and
            fname.endswith(".log")]

# Parsing client names
def client_name(fname):
    return fname.split(".")[0]

# move files to proper folders. Create folders if they don't exists
for fname in files:
    new_path = os.path.join(client_name(fname), fname)
    os.renames(fname, new_path)
0
ответ дан 19 January 2020 в 09:14

Другие вопросы по тегам:

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