从 SSH 根据年份删除文件

从 SSH 根据年份删除文件

我正在进行 putty 会话,想要从目录中删除 2009 年创建的文件。

请您给我确切的命令好吗?

答案1

首先,您是否使用 ssh 并不重要。重要的是它向您呈现的“shell”以及您可用的工具。我假设您处于“Bash”中并且可以使用“find”。

我还假设您所说的“2009 年创建”的意思是“早于 2010 年”,因为这对我来说更容易理解...如果不是,那么请看一下!

尝试find

find /path/to/directory/ -ctime +567 -delete

上述操作将删除超过 567 天的所有内容(截至本文发布之日,大约可追溯到 2009 年)

-delete您首先可以使用而不是-print。当您确定它只打印您想要删除的内容时,请使用-delete


如果您不想删除 2008 年的内容,那么您可以执行以下操作:

find /path/to/directory/ -ctime +567 -ctime -932 -delete

但这些数字可能不正确,您可以进行微调。


相关章节男人找到

   -ctime n
      File's status was last changed n*24 hours ago.  See the comments
      for -atime to understand how rounding affects the interpretation
      of file status change times.


   Numeric arguments can be specified as

   +n     for greater than n,

   -n     for less than n,

   n      for exactly n.

答案2

我假设您正在使用 PuTTY 通过 SSH 连接到运行某些 Linux 发行版的计算机。不幸的是,大多数 Linux 发行版不会记录文件的创建日期。您只能找到文件的最后修改时间和最后访问时间。

如果要查找当前目录中最后修改于 2009 年的所有文件,请使用以下命令:

find * \( ! -newermt '2010-01-01' \) -newermt '2008-12-31 23:59' -type f

如果您也想搜索子目录,请将其更改*.并删除,-type f如下所示:

find . \( ! -newermt '2010-01-01' \) -newermt '2008-12-31 23:59'

上面两个命令只会打印出文件名。如果你确定要删除文件,请-delete在末尾添加:

find * \( ! -newermt '2010-01-01' \) -newermt '2008-12-31 23:59' -type f -delete

答案3

最好的办法是在目标服务器上编写一个 shell 脚本。Plink 不提供对 stdin 的处理。请参阅:https://stackoverflow.com/questions/603187/how-to-send-commands-to-putty

相关内容