Как передать путь к команде xargs в Linux - PullRequest
0 голосов
/ 29 января 2020

У меня есть следующий код, который удаляет старые файлы в каталоге на основе их временных отметок:

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

Я пытаюсь сделать из этого исполняемый скрипт, и я не хочу переходить в каталог, в котором должна быть выполнена вышеуказанная команда, но достаточно просто передать ему путь, например, /tmp/backups/.

Как бы я это сделал? Присоединение пути непосредственно после каждой команды ls, grep, tail, xargs и rm?

1 Ответ

1 голос
/ 29 января 2020

Предполагая, что ваш путь является первым параметром вашего скрипта, вы можете сделать

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 каталог, в который он изменяется.

...