gpt4 book ai didi

linux - Shell 脚本 mkdir(如果没有)和 mv 文件到每一天

转载 作者:太空宇宙 更新时间:2023-11-04 11:28:08 27 4
gpt4 key购买 nike

我需要 checkin 一个包含 150.000 个这种格式的 zip 文件的目录:

log_from_2012_08_14-11:57:12_To_2012_08_14-13:57:12.zip
log_from_2012_08_14-13:57:12_To_2012_08_14-15:57:12.zip
log_from_2012_08_14-15:57:12_To_2012_08_14-17:57:12.zip

如果有一个名称等于文件日期的目录:

2012_08_14 

然后将 From_2012_08_14 中存在的所有文件移动到该目录,如果不创建它

( mkdir date +%Y_%M_%D )

然后检查从 8 月到今天 11 月的每一天,每天的每个文件都在自己的目录中创建并移动到那里。

最佳答案

cd /relevant/log/directory

# Create the necessary sub-directories
ls *from_????_??_??-??:??:??_To_????_??_??-??:??:??.zip |
sed 's/.*from_\([0-9]\{4\}_[0-9][0-9]_[0-9][0-9]\).*/\1/' |
sort -u |
xargs mkdir -p

# Move the files into the sub-directories
ls *from_????_??_??-??:??:??_To_????_??_??-??:??:??.zip |
sed 's/.*from_\([0-9]\{4\}_[0-9][0-9]_[0-9][0-9]\).*/mv & \1;/' |
sh -x

-x 是可选的,但它会向您展示正在发生的事情。我假设您的文件名都不包含空格或换行符。我还假设没有包含字母数字的文件,其中 shell 模式中的 ? 应该与数字匹配。您可以将每个 ? 扩展为 [0-9] 如果您必须完全偏执,或者修改 sed 脚本以丢弃不存在的名称'匹配等

关于linux - Shell 脚本 mkdir(如果没有)和 mv 文件到每一天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13225053/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com