У меня есть много файлов в папке с этой структурой:
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 терминалов. Какая-либо идея?
Можно удалить самый длинный запаздывающий "точечный суффикс" строки в переменной f
использование расширения параметра оболочки ${f%%.*}
Так, например,
for f in *.log; do mkdir -p "${f%%.*}" && mv --no-clobber -- "$f" "${f%%.*}"/; done
Я предложил бы делать резервную копию Ваших данных сначала, на всякий случай они не делают то, что Вы ожидаете
Вот сценарий 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)