我在具有以下结构的文件夹中有很多文件:
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
f
您可以使用 shell 参数扩展删除变量中字符串最长的尾随“点后缀”${f%%.*}
例如
for f in *.log; do mkdir -p "${f%%.*}" && mv --no-clobber -- "$f" "${f%%.*}"/; done
我建议先备份你的数据,以防万一它没有达到你的预期
答案2
这是将文件从当前文件夹移动到客户端子文件夹的 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)