【问题标题】:Linux / OS X rename preserving timestampsLinux / OS X 重命名保留时间戳
【发布时间】:2013-12-17 22:59:08
【问题描述】:

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

我已经掌握了以下命令:

1- 用于重命名命令 (OS X 版本)首先: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

有谁知道我如何将两者结合成一个脚本..? 感谢所有帮助! :)

【问题讨论】:

  • 只需cp -p 即可保存时间。

标签: linux macos bash touch rename


【解决方案1】:

brew install rename (http://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

【讨论】:

  • 是的,在我的第一次测试中(在桌面上),它似乎更新了时间戳,但我发现在服务器上它保留了它们:) 也感谢您提供替代选项!
猜你喜欢
  • 2016-05-06
  • 2017-03-16
  • 2023-03-29
  • 2016-10-26
  • 2023-04-04
  • 1970-01-01
  • 2015-06-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多