mv несколько файлов из разных папок с определенной даты

Вы можете использовать эту команду, чтобы узнать, появляется ли строка в некоторых файлах.gz в одной папке:

zgrep the_string  *.gz -l

Чтобы сделать это для списка папок, которые находятся в одной папке:

find. -name "*.gz" | xargs zgrep the_string -l

Например, вывод выглядит следующим образом:

./tmp/2/F.tar.gz
./tmp/2/F1.tar.gz
./tmp/1/F.tar.gz
./tmp/1/F1.tar.gz

Теперь вы получаете список файлов, содержащих эту строку.

1
14.10.2020, 12:31
2 ответа

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

find f1 f2 -maxdepth 1 -type f -newermt 2016-06-22 ! -newermt 2018-09-21 -exec echo mv -t f3 {} +

Я могу ошибаться в датах на ±1 день с каждой стороны -проверьте это и внесите соответствующие изменения. Когда вы будете довольны, вы увидите, что команда mvполучила правильные файлы, удалите префикс echo.

3
18.03.2021, 22:57

Сzsh:

autoload age
mv (f1|f2)/*(.e[age 2016-06-22 2018-09-21]) f3/

(обратите внимание, что он соответствует файлам (обычных файлов только с квалификатором .glob ), последний раз измененным между началом этих двух дней. Если вы также хотите переместить файлы, измененные в любое время 2018 -09 -21, вам нужно изменить вторую дату на 2018 -09 -22 ).

0
18.03.2021, 22:57

Теги

Похожие вопросы