如何根据每月文件在unix中自动创建文件夹
我有一个名为TEST123_20112020.csv的文件 我有一个固定的路径,如processed/daily/文件每天传输的路径 我需要知道Unix命令,它将根据文件的年份和月份分别创建目录,并将该文件传输到该目录 例如: 文件名:TEST123_20112020.csv 目录:processed/daily/2020/Nov 文件名:TEST123_15092022.csv如何根据每月文件在unix中自动创建文件夹,unix,filenames,Unix,Filenames,我有一个名为TEST123_20112020.csv的文件 我有一个固定的路径,如processed/daily/文件每天传输的路径 我需要知道Unix命令,它将根据文件的年份和月份分别创建目录,并将该文件传输到该目录 例如: 文件名:TEST123_20112020.csv 目录:processed/daily/2020/Nov 文件名:TEST123_15092022.csv 目录:processed/daily/2020/Sep您可以通过连接到awk的find来实现这一点,因此: find
目录:processed/daily/2020/Sep您可以通过连接到awk的find来实现这一点,因此:
find . -name "TEST123.*csv" | awk -F[_\.] '{ yr=substr($2,length($2)-3);yr1=substr($2,length($2)-1);dat1=substr($2,1,4)""yr1;"date -d \""dat1"\" +%b" | getline mon;print "mkdir processed/daily/"yr"/"mon }'
获取find命令的输出,将字段分隔符设置为u和。在awk中使用-F,然后使用awk的substr函数将变量yr设置为全年。设置两位数的年份(yr1),以便稍后与date命令一起使用。使用yr1设置符合日期命令的日期(dat1),然后将其与日期命令和awk的get行一起使用,将其读入变量mon。变量mon with包含所需的缩写月份名称。最后打印本月和年份,以形成mkdir命令
验证此命令是否符合预期(这很重要!)后,您可以用最终打印命令替换awk的系统功能,以实际执行该命令,因此:
find . -name "TEST123.*csv" | awk -F[_\.] '{ yr=substr($2,length($2)-3);yr1=substr($2,length($2)-1);dat1=substr($2,1,4)""yr1;"date -d \""dat1"\" +%b" | getline mon;system("mkdir processed/daily/"yr"/"mon) }'