首页 > 解决方案 > 如何在 Linux 中将路径传递给 xargs 命令

问题描述

我有以下代码,它根据时间戳删除目录中的旧文件:

ls -tp | grep -v '/$' | tail -n +2 | xargs -I {} rm -- {}

我正在尝试从中制作一个可执行脚本,我不想 cd 进入应该运行上述命令的目录,而是简单地将路径传递/tmp/backups/给它。

我该怎么做?在每个命令之后直接附加路径ls, grep,tail和?xargsrm

标签: bashgreplsxargstail

解决方案


假设您的路径是脚本的第一个参数,您可以执行

cd "${1:-/tmp/backups}" # Use the parameter, supply default if none
# Do your cleanup here

如果您之后在原始工作目录中有更多事情要做,只需执行

cd - >/dev/null
# Do what ever you need to do in the original working directory

将 stdout 重定向到位桶的唯一目的是,因为cd -默认情况下会将其更改到的目录打印到 stdout。


推荐阅读