Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何根据每月文件在unix中自动创建文件夹_Unix_Filenames - Fatal编程技术网

如何根据每月文件在unix中自动创建文件夹

如何根据每月文件在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

我有一个名为TEST123_20112020.csv的文件

我有一个固定的路径,如processed/daily/文件每天传输的路径

我需要知道Unix命令,它将根据文件的年份和月份分别创建目录,并将该文件传输到该目录

例如:

文件名:TEST123_20112020.csv 目录:processed/daily/2020/Nov

文件名:TEST123_15092022.csv
目录: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) }'