首页 > 解决方案 > 远程执行命令 | 仅保留 5 个最近的文件/目录

问题描述

我在远程服务器上创建了一个测试目录。为了模拟这个命令,我在这个测试目录中创建了 6 个文件。该命令的预期行为是仅在目录中保留 5 个最近的文件。好消息是这个命令有效!

我唯一的麻烦是我无法远程执行相同的命令。唯一的区别是远程执行的 "" 符号:

ssh account@someremoteserver.com "rm -rf `ls -t /usr/local/testingCommands | awk 'NR>5'`"

原因是.. 我有一个 Jenkins CI 服务器需要远程清理远程服务器,只保留 5 个最近的文件。

任何帮助是极大的赞赏。谢谢!

标签: bashpowershellunixssh

解决方案


ssh account@someremoteserver.com '/usr/bin/ls -1Qt /usr/local/testingCommands | awk "NR > 5" | /usr/bin/xargs /usr/bin/rm -rf'

评论:

  • 对所有命令使用绝对目录(出于安全原因)
  • rm ... $(...)真的太危险了,所以反转rmls命令:
    • 使用ls命令,每行一个文件选项 ( -1),带引号的文件名 ( -Q) 用于带空格的文件名

推荐阅读