Macos 查找具有(损坏)未来日期的所有文件并修改为今天

Macos 查找具有(损坏)未来日期的所有文件并修改为今天,macos,shell,command-line,zsh,file-attributes,Macos,Shell,Command Line,Zsh,File Attributes,在数千个文件夹层次结构中,有231个文件的创建和修改日期不正确(空?)。我可以识别他们: find . -mtime -0 他们的约会时间都很长。不太确定,但我用ls-l观察的少数几个似乎是在2040年 无论如何,如果可能的话,我想首先在上述命令的输出中显示创建和修改日期 其次,更重要的是,我想将这些文件的创建和修改日期更改为今天(现在) 我不是bash大师,但我知道有一个简单的方法。提前谢谢 我会按如下方式使用“查找”并执行“触摸”来设置修改日期: find . -mtime -0 -exe

在数千个文件夹层次结构中,有231个文件的创建和修改日期不正确(空?)。我可以识别他们:

find . -mtime -0
他们的约会时间都很长。不太确定,但我用
ls-l
观察的少数几个似乎是在2040年

无论如何,如果可能的话,我想首先在上述命令的输出中显示创建和修改日期

其次,更重要的是,我想将这些文件的创建和修改日期更改为今天(现在)

我不是bash大师,但我知道有一个简单的方法。提前谢谢

我会按如下方式使用“查找”并执行“触摸”来设置修改日期:

find . -mtime -0 -exec touch {} \;
不确定如何/是否可以更改创建日期。您可能需要通过将文件复制到新的临时名称,然后将其重命名回原始名称来重新创建文件。GNU touch在这里可能会有所帮助

您可以使用“ls-Ul”表示文件创建日期,“ls-l”表示修改时间,如下所示:

find .-mtime -0 -exec ls -Ul {} \;


一个技巧是复制文件并将其移回原位。 当心文件的所有权和模式,否则它将以更严重的方式破坏您的系统

例如,这里的fstab的时间戳错误:

$ stat /etc/fstab
  File: '/etc/fstab'
  Size: 37          Blocks: 8          IO Block: 4096   regular file
Device: b30ah/45834d    Inode: 504         Links: 1
Access: (0644/-rw-r--r--)  Uid: (    1000/    user)   Gid: (    0/    user)
Access: 2105-12-20 17:23:10.624000001 +0000
Modify: 2018-07-31 00:29:37.000000000 +0000
Change: 2020-01-21 08:58:48.779991299 +0000
 Birth: -



$ sudo cp  /etc/fstab /etc/fstab_  --preserve=ownership --preserve=mode
$ sudo mv  /etc/fstab_ /etc/fstab



$ stat /etc/fstab
  File: '/etc/fstab'
  Size: 37          Blocks: 8          IO Block: 4096   regular file
Device: b30ah/45834d    Inode: 1534        Links: 1
Access: (0644/-rw-r--r--)  Uid: (    1000/    user)   Gid: (    1000/    user)
Access: 2020-02-06 16:52:33.684297747 +0000
Modify: 2020-02-06 16:52:33.684297747 +0000
Change: 2020-02-06 16:52:43.093550721 +0000
 Birth: -
$ 
在2行命令集内,这将是:

$ sudo find /  -type f -newermt 2020-02-07 -exec cp {} {}_ --preserve=ownership -preserve=mode  \;
然后找到复制的文件并将其移回原位

$ sudo find /  -type f -iname "*_"  -exec mv {}_ {}   \;
您可以使用以下命令检查日期:

$ sudo find /  -type f -newermt 2020-02-07
注意:作为尾随字符,我选择了“\u”,请根据您的需要进行调整,以避免文件系统中出现任何冲突

$ sudo find /  -type f -newermt 2020-02-07