我有一个目录,里面有随机名称的文件。我希望能够根据时间顺序将它们重命名为“文件 1”“文件 2”等,即文件创建日期。我可能正在编写一个简短的 Python 脚本,但我什么也学不到。我想知道是否有一个聪明的 1 行命令可以解决这个问题。如果有人能指出我正确的方向。
我正在使用zsh。
谢谢!
我有一个目录,里面有随机名称的文件。我希望能够根据时间顺序将它们重命名为“文件 1”“文件 2”等,即文件创建日期。我可能正在编写一个简短的 Python 脚本,但我什么也学不到。我想知道是否有一个聪明的 1 行命令可以解决这个问题。如果有人能指出我正确的方向。
我正在使用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"
对于 Bash(请注意选项read
和从零开始索引而不是从一开始的索引的区别):
saveIFS="$IFS"; IFS=$'\0'; while read -a line; do mv "${line[1]}" "${line[0]%.*}.${line[1]}"; done < <(find -maxdepth 1 -type f -printf "%T+\0%f\n"); IFS="$saveIFS"
这些通过将修改日期添加到原始文件名的开头来重命名文件,保留该日期以防止名称冲突。
由此产生的文件名可能如下所示:
2009-12-15+11:08:52.original.txt
因为空值用作内部字段分隔符 (IFS),所以应保留带空格的文件名。