Получить имя каталога с помощью grep и удалить его - PullRequest
0 голосов
/ 12 февраля 2020

пожалуйста, есть ли какой-нибудь простой способ, как я могу получить ИМЯ вывод только из строк, где DATE <5 дней a go, а затем вызвать другую команду с именем rm в этих строках с NAME в качестве аргумента? </p>

У меня есть следующий вывод команды mega-ls path / -l (mega.nz):

FLAGS VERS    SIZE            DATE       NAME
d---    -          - 06Feb2020 05:00:01 bk_20200206050000
d---    -          - 07Feb2020 05:00:01 bk_20200207050000
d---    -          - 08Feb2020 05:00:01 bk_20200208050000
d---    -          - 09Feb2020 05:00:01 bk_20200209050000
d---    -          - 10Feb2020 05:00:01 bk_20200210050000
d---    -          - 11Feb2020 05:00:01 bk_20200211050000

Я пробовал grep, sort и другие способы, например путь mega-ls / -l | head -n 5 но я не знаю, как искать эти строки по дате.

Большое спасибо.

1 Ответ

0 голосов
/ 14 февраля 2020

Я пытаюсь найти простой способ для вашего запроса;)

mega-ls path/ -l | head -n 5 | tr -s ' ' | cut -d ' ' -f6 | grep -v -e '^$' | grep '^bk_20200206.*' | xargs rm -f

Часть 1: Это ваша команда (список папок возвращен по дополнительным данным)

путь в мега-ls / -l | head -n 5

Часть 2. Попробуйте удалить лишний пробел в вашей части. Результат 1

tr-s '

Часть 3: Попытайтесь использовать команду обрезки, чтобы отделить результат, часть 2 и вернуть столбец Name Folders

cut -d '' -f6

Часть 4: Попробуйте удалить пустые строки из части результата 3 (результат строки заголовка)

grep -v -e '^ $'

Часть 5: Это ваш запрос на поиск папки имя по дате ггггммдд Пример формата: 20200206 (замените 20200206 на вашу реальную дату)

grep '^ bk_20200206. *'

Часть 6: (Очень важно !!) Если вам нужно удалить папки с результатами, используйте эту часть (Очень важно !!)

xargs rm -f

С наилучшими пожеланиями

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...