bash - 远程执行命令 | 仅保留 5 个最近的文件/目录
问题描述
我在远程服务器上创建了一个测试目录。为了模拟这个命令,我在这个测试目录中创建了 6 个文件。该命令的预期行为是仅在目录中保留 5 个最近的文件。好消息是这个命令有效!
我唯一的麻烦是我无法远程执行相同的命令。唯一的区别是远程执行的 "" 符号:
ssh account@someremoteserver.com "rm -rf `ls -t /usr/local/testingCommands | awk 'NR>5'`"
原因是.. 我有一个 Jenkins CI 服务器需要远程清理远程服务器,只保留 5 个最近的文件。
任何帮助是极大的赞赏。谢谢!
解决方案
ssh account@someremoteserver.com '/usr/bin/ls -1Qt /usr/local/testingCommands | awk "NR > 5" | /usr/bin/xargs /usr/bin/rm -rf'
评论:
- 对所有命令使用绝对目录(出于安全原因)
rm ... $(...)
真的太危险了,所以反转rm
和ls
命令:- 使用
ls
命令,每行一个文件选项 (-1
),带引号的文件名 (-Q
) 用于带空格的文件名
- 使用
推荐阅读
- python - PyGame 通过附加正方形来制作网格
- string - 如何从文件 csv 将 str 转换为 int
- r - 出错,gcc:“make [4]:gcc:权限被拒绝”(Arch Linux)
- c# - ViewModel 之间的值更新通知
- django - 使用 UML 记录 Django
- r - dump() 用于环境(递归)
- python - 来自不同 DataFrame 列的 Python 绘图线
- javascript - React 如何在没有 npm 的情况下创建通知
- c# - 如何根据公共属性过滤列表(然后才能找到最小值)
- html - 如何将参数传递给 GET Web 请求而不在 URL 中显示?