Вы можете использовать эту команду, чтобы узнать, появляется ли строка в некоторых файлах.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
Теперь вы получаете список файлов, содержащих эту строку.
Поскольку вы отметили ubuntu , я предполагаю, что инструменты GNU
find f1 f2 -maxdepth 1 -type f -newermt 2016-06-22 ! -newermt 2018-09-21 -exec echo mv -t f3 {} +
Я могу ошибаться в датах на ±1 день с каждой стороны -проверьте это и внесите соответствующие изменения. Когда вы будете довольны, вы увидите, что команда mv
получила правильные файлы, удалите префикс echo
.
Сzsh
:
autoload age
mv (f1|f2)/*(.e[age 2016-06-22 2018-09-21]) f3/
(обратите внимание, что он соответствует файлам (обычных файлов только с квалификатором .
glob ), последний раз измененным между началом этих двух дней. Если вы также хотите переместить файлы, измененные в любое время 2018 -09 -21, вам нужно изменить вторую дату на 2018 -09 -22 ).