Bash 在文件名上追加创建日期
我试图通过使用bash脚本在目录和子目录中的所有文件(不包括文件夹)前面添加创建(未修改)时间戳来重命名。 我从我的一篇文章中得到了这个bash。但是当前的bash不会打印创建日期Bash 在文件名上追加创建日期,bash,date,Bash,Date,我试图通过使用bash脚本在目录和子目录中的所有文件(不包括文件夹)前面添加创建(未修改)时间戳来重命名。 我从我的一篇文章中得到了这个bash。但是当前的bash不会打印创建日期 for f in $(find . -type f); do mv -T "$f" "${f%/*}/$(date -r "$f" +"%Y %m %d %H %M %S"|sed -e 's/ /_/g')_"${f##*/}"" done 可以使用以下bash命令: find . -type
for f in $(find . -type f); do
mv -T "$f" "${f%/*}/$(date -r "$f" +"%Y %m %d %H %M %S"|sed -e 's/ /_/g')_"${f##*/}""
done
可以使用以下bash命令:
find . -type f -exec bash -c 'mv "$1" "$(dirname "$1")/$(stat -c %w "$1" | sed "s/\([^.]*\).*/\1/;s/[-: ]/_/g")_$(basename "$1")"' _ {} \;
find
查找所有常规文件,并使用mv
重命名找到的每个文件
构建文件名时,会将创建时间附加到文件的开头
为了获得文件创建时间,我使用带有选项-c%w
的stat
来代替给出修改时间的date-r
sed
命令将stat
的输出替换为所需格式(使用。使用日期-r而不是stat
find . -type f -exec bash -c 'mv "$1" "$(dirname "$1")/$(date -r "$1" +%F | sed "s/\([^.]*\).*/\1/;s/[-: ]/_/g")_$(basename "$1")"' _ {} \;
请参阅:为什么要标记C?它对我不起作用,因为u在文件名前面附加,而不是在创建日期之前附加。@ZinOo这可能是因为您的文件系统不支持文件创建时间戳。看看