Macos 查找具有(损坏)未来日期的所有文件并修改为今天
在数千个文件夹层次结构中,有231个文件的创建和修改日期不正确(空?)。我可以识别他们: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
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