Unix 是否根据排序的创建日期重命名文件?

Unix 是否根据排序的创建日期重命名文件?,unix,shell,zsh,batch-rename,Unix,Shell,Zsh,Batch Rename,我有一个目录,里面装满了随机名字的文件。我希望能够根据时间顺序(即文件创建日期)将它们重命名为“文件1”“文件2”等。我可以写一个简短的Python脚本,但那样我就什么也学不到了。我想知道是否有一个聪明的单行命令可以解决这个问题。如果有人能给我指出正确的方向 我用的是zsh 谢谢 对于zsh: saveIFS="$IFS"; IFS=$'\0'; while read -A line; do mv "${line[2]}" "${line[1]%.*}.${line[2]}"; done <

我有一个目录,里面装满了随机名字的文件。我希望能够根据时间顺序(即文件创建日期)将它们重命名为“文件1”“文件2”等。我可以写一个简短的Python脚本,但那样我就什么也学不到了。我想知道是否有一个聪明的单行命令可以解决这个问题。如果有人能给我指出正确的方向

我用的是zsh

谢谢

对于
zsh

saveIFS="$IFS"; IFS=$'\0'; while read -A line; do mv "${line[2]}" "${line[1]%.*}.${line[2]}"; done < <(find -maxdepth 1 -type f -printf "%T+ %f\n"); IFS="$saveIFS"
这些文件通过在原始文件名的开头添加修改日期来重命名文件,保留原始文件名以防止名称冲突

由此产生的文件名可能如下所示:

2009-12-15+11:08:52.original.txt

由于使用null作为内部字段分隔符(IFS),因此应保留带空格的文件名。

我不希望听起来很挑剔,我相信您无法获得文件创建日期。ctime是inode更改时间,与您想要的时间不同。但是,您可以获得修改时间。@Brian Agnew:文件创建日期确实是文件系统的一个特性(尽管在大多数unix/linux Popullar文件系统上确实很少见)。不过,它在大多数基于xBSD的系统(包括Mac OS X)和Windows上都有功能。@ChristopheD-不知道MacOS支持它。我相信ZFS也会这样做。但它是否表现为ctime?
2009-12-15+11:08:52.original.txt