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

BASH:递归重命名为上次修改日期前缀,bash,recursion,find,rename,mv,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,或者返回的文件名以./开头,

我已经试了一两个小时,但我不能让它正常工作。我试图在目录树中的大量文件前加上文件的最后修改日期,格式为%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,或者返回的文件名以./开头,这也没有帮助,我确信有一种比解析每个输出更简单的方法来删除./然后使用剩余的文件名搜索和重命名

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

我曾尝试使用find with-exec和-execdir等,但当我在date命令中输入“{}”时,它超出了范围,date无法找到文件


非常令人沮丧。希望有人能帮忙!谢谢

我想我只是用:
在**/*.txt中表示f;执行mv$f${f%/*}/$(日期-r$f+%d%m%y)${f##*/};完成似乎有一些问题,但大部分工作都没有完成!你能给自己的问题贴个答案并接受吗?Thnx!我想我只是用:
在**/*.txt中表示f;执行mv$f${f%/*}/$(日期-r$f+%d%m%y)${f##*/};完成似乎有一些问题,但大部分工作都没有完成!你能给自己的问题贴个答案并接受吗?Thnx!