按文件创建日期重命名

按文件创建日期重命名

我有一些文件想使用它们创建的日期对其进行重命名。我怎样才能自动执行此操作?查看每个文件的属性然后重命名它是一件非常痛苦的事情。例如

在一个文件夹中,假设我有:

file1
file2
file3
file4
file5       
    . . . . . etc

如何在文件创建之日重命名它们

file1_2018-10-06
file2_2013-10-12
file3_2014-09-26
file4_2018-10-06
file5_2017-11-13
    . . . . . etc

答案1

假设“创建”意味着mtime1,并且 (ab)使用基于 Perl 的rename

$ rename -n 'BEGIN{use POSIX;} $_ .= strftime("_%x", localtime( (stat($_))[9] ))' file?
rename(file1, file1_2018-09-23)
rename(file2, file2_2018-09-15)
rename(file3, file3_2018-10-01)
rename(file4, file4_2018-09-15)
rename(file5, file5_2018-10-06)

-n是一个试运行模式 - 一旦您对建议的重命名感到满意,请将其删除)。


1原因如下:如何查找文件的创建日期?

答案2

你可以这样做:

#!/bin/bash
cd folder
ls -l --time-style=long-iso | awk '{print $8 " " $6}' | while IFS= read line; do

filename=$(echo $line | awk '{print $1}')
date=$(echo $line | awk '{print $2}')

mv ${filename} ${filename}_${date}

done

答案3

stat可用的?尝试

stat -c"mv %n %n_%y" file* | sed 's/ [^ ]* [^ ]*$//'
mv file file_2018-10-04
mv file~ file~_2018-09-30
mv file1 file1_2018-10-05
mv file1~ file1~_2018-10-04

sh如果对结果满意则通过管道。或者通过“流程替换”来获取它。

相关内容