我有一个文件夹,里面有很多按日期命名的文件,如下所示:
(Some numbers)-date-(somenumbers).filet ype
“日期”的列出方式如下:
20150730225001 2015 年 7 月 30 日在 0 10:50(还有 1 秒)
有没有一种快速的方法可以使用 Ubuntu 终端来组织它以提供如下结构:
当前文件夹/年/月/日/时/(所有符合条件的文件都放在这里)
我曾尝试为此寻找解决方案,但大多数都让我感到困惑,因为我是 Unix 脚本编写的新手。
最佳答案
所以在 foo/
中有这两个文件
42-20150730225001-473826.filet
98-20141115180001-482157.filet
您可以使用此 Perl 脚本:
#!/usr/bin/perl
for(@ARGV) {
if (/.*-(\d{4})(\d\d)(\d\d)(\d+)-.*[.]filet/) {
`mkdir -p $1/$2/$3/ && mv $_ $1/$2/$3/$4.filet`;
}
}
或者这个单行本:
ls | xargs perl -e 'for(@ARGV){qx{mkdir -p $1/$2/$3/ && mv $_ $1/$2/$3/$4.filet} if /.*-(\d{4})(\d\d)(\d\d)(\d+)-.*[.]filet/}'
关于linux - 一个 liner shell 脚本,用于按日期重组文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31777964/