Как использовать grep для поиска всех zip-файлов в каталоге?

У меня есть каталог с более чем 1000 файлами, а некоторые из них - .zip-файлы, и я хочу превратить их все в .tgz-файлы.

Я хочу использовать grep для создания списка имен файлов. Я пробовал «grep * .zip» безрезультатно. Читая страницы руководства, я думал, что * был универсальным селектором. Почему это не работает?

Спасибо.

4
задан 19 January 2012 в 23:33

2 ответа

Вместо этого вы должны использовать find.

find <dir> -iname \*.zip

Пример: для поиска всех .zip файлов в текущем каталоге и во всех подкаталогах попробуйте это:

find . -iname \*.zip

Здесь будут перечислены все файлы, заканчивающиеся на .zip в отношении случая. Если вам нужны только те, у кого с младшим изменением -iname на -name

Команда grep ищет укусы в файлах, а не файлы. Вы можете использовать его с find, чтобы перечислить все ваши .zip файлы, такие как

find . |grep -e "\.zip$"
8
ответ дан 25 May 2018 в 15:02
  • 1
    Добавлена ​​информация о том, как использовать find с grep, если вам интересно. – Zoke 19 January 2012 в 23:51
  • 2
    Учитывая, что .zip-файлы могут поступать из одной из «других платформ», вполне возможно, что они потенциально будут содержать пробелы. Предполагая, что процесс преобразования связан с скриптом, например, zip2tgz, может быть несколько удобнее использовать find -iname '*.zip' -print0 | xargs -0 zip2tgz или find -iname '*.zip' -exec zip2tgz '{}' \; – dannysauer 6 November 2015 в 19:31

По умолчанию Grep использует регулярные выражения. Вы хотите использовать выражение:

grep .zip $

Возможно, вы захотите использовать find.

find. -name '* .zip'

Или вы можете найти find в grep

find . | grep .zip$
2
ответ дан 25 May 2018 в 15:02
  • 1
    Не нужно тратить результаты поиска на grep, см. Выше. – Panther 20 January 2012 в 00:05

Другие вопросы по тегам:

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