我正在进行 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