Как удалить все файлы, кроме определенного в оболочке Bourne? - PullRequest
1 голос
/ 25 сентября 2019

У меня есть поток Node-RED, обновляющий файл с измерениями каждую секунду, и новый файл создается для каждого дня.Все файлы, кроме обновляемого в настоящее время, необходимо будет удалять каждые несколько дней, который я надеюсь автоматизировать с помощью узла Node-Red exec.

Я знаю, что команда bash rm !(filetokeep) работает для этого, но Node-RED запускает любые входные данные для узла exec в оболочке Bourne, и поэтому эта команда не будет работать в оболочке sh.

Какой будет соответствующая команда для rm !(filetokeep) в оболочке sh?

Ответы [ 2 ]

1 голос
/ 26 сентября 2019

Node-RED не использует никакую оболочку при выполнении команд, он просто передает команду на exec, поэтому не будет происходить глобализация файла уровня оболочки, передаваемая команде rm.

Команда findбудет только то, что вы хотите, без необходимости делать какие-либо предположения о среде, в которой выполняется команда:

find . -type f -maxdepth 1 -mtime +1 -exec rm {} \;

Это приведет к удалению всех файлов, которые были изменены более 1 дня назад, из текущего рабочего каталога (.)

0 голосов
/ 26 сентября 2019

просто используйте это: rm !("filename")

...