Мне была бы нужна команда для копирования файлов от нескольких каталогов до одного каталога (/home/c/), которые все имеют "ZA*3094 ~". Обратите внимание, что файлы находятся в сжатом формате (gz).
Пример:/home/a/20180901/file.gz/home/a/20180902/file1.gz/home/a/20180903/file2.gz/home/a/20180903/file3.gz
Команда zgrep
должна помочь, у меня есть этот пример
mv $(find a/*/* -type f -name "*.gz" -exec zgrep -l 'nob' {} \;) /tmp
Команда выполняет следующее:
zgrep
подобно grep
использует -l
] опция для возврата имен файлов, которые содержат искомое слово nob
mv $(find a/*/* -type f -name "*.gz" -exec zgrep -l 'nob' {} \;) /tmp
будет перемещать любые возвращенные файлы с расширением .gz
в папку /tmp
Можно использовать foor цикл
IFS=$'\n'; for i in $( find <source_directory> -type f | grep '.gz$'); do echo cp \"$i\" \"<destination_directory>\"; done
замена <source_directory>
и <destination_directory>
-type f
только возвратит файлы.gz
echo
для пробного прогона, Если все смотрит хорошо просто, удаляют эхо