Linux / OS X重命名保留时间戳

时间:2013-12-02 09:30:19

标签: linux macos bash touch rename

要将OS X服务器的内容传输到兼容NTFS的服务器,我需要清理所有文件名,保留原始时间戳。

我已经完成了以下命令:

1-表示重命名命令 (OS X VERSION)FIRST:brew install rename

find "$1" -print0 | xargs -0 rename 's/[\\:*?"<>|]/-/g'

2-保留时间戳:

touch -r "$1" reference.tmp; mv -- "$1" "$2"; touch -r reference.tmp -- "$2"; rm reference.tmp

有人知道如何将两者结合到一个脚本中吗? 所有帮助都非常感谢! :)

1 个答案:

答案 0 :(得分:1)

brew install renamehttp://plasmasturm.org/code/rename/)安装的重命名似乎默认保留mtime,atime和ctime以及创建时间。

$ touch a
$ stat -f'%m %a %c %B' a
1385979835 1385979835 1385979835 1385979835
$ rename s/a/b/ *
$ stat -f'%m %a %c %B' b
1385979835 1385979835 1385979835 1385979835

你也可以使用这样的命令:

for f in **/*; do mv -- "$f" "${f//[\\:*?\"<>|]/-}"; done

**需要bash 4.0或更高版本以及shopt -s globstar