lmoly Asked: 2022-04-26 01:38:25 +0800 CST2022-04-26 01:38:25 +0800 CST 2022-04-26 01:38:25 +0800 CST 插入文件而不更改文件夹的修改时间戳? 772 我有数百个带有修改时间戳的文件夹,我想保留。现在我需要将一个文件复制到其中。 除了这条路... timestamp=$(stat -c %y /foldername) cp /tmp/file.jpg /foldername/file.jpg touch -d "$timestamp" /foldername ...有没有更好的方法来抑制文件夹修改时间戳? bash shell 1 个回答 Voted Best Answer Stéphane Chazelas 2022-04-26T02:17:22+08:002022-04-26T02:17:22+08:00 另一种方法是使用touch -r. 在zsh: () { touch -r $2:h -- $3 && cp -T -- $2 $3 && touch -r $3 -- $2:h } /tmp/file.jpg /foldername/file.jpg =(:) Where=(:)创建一个空的临时文件,一旦匿名函数终止,该文件就会被删除。-T(强制cp成为copy-to而不是copy-into)是 GNU 扩展。 或者 make 是一个函数,这里允许将额外的选项传递给cp: copy_while_preserving_mtime_of_target_directory() { # Usage: ... [cp options] source dest () { touch -r "$@[-1]:h" -- "$1" && cp -T "$@[2,-1]" && touch -r "$1" -- "$@[-1]:h" } =(:) "$@" } 另一种方法可能是一些函数,它将任意 shell 代码作为参数并将其执行包装在保存和恢复目录 mtime 的东西中: run_while_preserving_mtime_of() { # Usage: ... directory shell-code () { touch -r "$2" -- "$1" || return { eval -- "$@[3,-1]" } always { touch -r "$1" -- "$2" } } =(:) "$@" } 用作: run_while_preserving_mtime_of /foldername ' cp /tmp/file.jpg /foldername/file.jpg ' 例如。
另一种方法是使用
touch -r
. 在zsh
:Where
=(:)
创建一个空的临时文件,一旦匿名函数终止,该文件就会被删除。-T
(强制cp
成为copy-to而不是copy-into)是 GNU 扩展。或者 make 是一个函数,这里允许将额外的选项传递给
cp
:另一种方法可能是一些函数,它将任意 shell 代码作为参数并将其执行包装在保存和恢复目录 mtime 的东西中:
用作:
例如。