BASH:递归重命名为上次修改日期前缀

时间:2017-04-04 01:00:06

标签: bash recursion find rename mv

我已经尝试了一两个小时,但我无法正常工作。我尝试使用文件的最后修改日期在整个目录树中为大量文件添加前缀,采用特定的%d%m%y格式,并带有以下短划线( - )。文件名需要与Windows兼容。

当然,这适用于一个目录:

for f in *; do mv $f $(date -r $f + %d%m%y)-$f ; done;

重命名日志,例如: logfile-0001.txt到030417-logfile-0001.txt

但我无法弄清楚如何递归地执行此操作。我的问题是要么无法为日期-r指定$ f,要么我返回以./开头的文件名,这也没有任何帮助,我确信有一种比解析每个输出更简单的方法在使用剩余文件名之前删除./然后搜索并重命名。

目录树有点多,文件位于不同的级别。

我尝试过使用带有-exec和-execdir等的find,但是当我放入" {}"在日期命令中,它超出了范围,日期无法找到该文件。

非常令人沮丧。希望有人可以提供帮助!谢谢!

0 个答案:

没有答案