Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 在文件名上追加创建日期_Bash_Date - Fatal编程技术网

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

我试图通过使用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 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这可能是因为您的文件系统不支持文件创建时间戳。看看