LINUX.ORG.RU

ls+grep+zip в один архив

 ,


0

1

Всем привет!

У меня есть команда чтобы вывести рекурсивно все файлы, найденные по подстроке

ls -laR | grep "plate"

А как их всех потом запаковать в 1 архив???

★★

Последнее исправление: Andreezy (всего исправлений: 2)

Примерно так. Записать полученные имена в файл. Потом вычитывать их и добавлять в команду упаковки.

symon2014 ★★
()

ls -laR | grep «plate»

Вместо таких костылей лучше использовать find, например,

find . -name '*plate*'
annulen ★★★★★
()
Ответ на: комментарий от symon2014

Ну ты нашел где спрашивать советы по линуксу…

Xenius ★★★★★
()
Ответ на: комментарий от Xenius

find /путь_к_директории -name '*plate*' -type f -print0 | tar -czvf имя_архива.tar.gz --null -T -

Andreezy ★★
() автор топика
Последнее исправление: Andreezy (всего исправлений: 1)
Ответ на: комментарий от annulen
find . -name '*plate*'
find ./ \( -type f -o -type l \) -name '*plate*' \
  | cut -c3- \
  | sort \
  | tar --files-from - ...
  • Через -type ограничиваем find(1) только файлами и симлинками (избавит архив от лишних вхождений);
  • С помощью cut(1) отрезаем ./ у вхождений (они в архиве не нужны, всё равно это будет равносильно их отсутствию, а с длинным листингом экономит место);
  • Сортируем с помощью sort(1) полученный список, это ощутимо влияет на сжатие в положительную сторону;
  • Сразу скармливаем tar(1), для этого (по крайней мере во FreeBSD) есть флаг --files-from -.

@Andreezy, не забудь покормить кота.

mord0d ★★★★★
()
Ответ на: комментарий от mord0d

cut -c3-

Может лучше «man find» прочитать про -printf ?

Сортируем с помощью sort(1) полученный список, это ощутимо влияет на сжатие в положительную сторону;

Откуда дровишки?

И где здесь сжатие?

vel ★★★★★
()

Не нужно использовать ls не по назначению.

find ./ -type f -name "*plate*" -exec tar -rvf plate_files.tar '{}' \;
Полученный plate_files.tar потом можно сжать.

shell-script ★★★★★
()
Ответ на: комментарий от shell-script

plate_files.tar — имя выбрано, чтобы оно попало в условие find и tar попытался его добавить в архив?

И, если уж TC дошёл до ″--null″, то и вашему примеру не помешает ″--add-file″, чтобы обрабатывать файлы, с именами, начинающимися с чёрточки ″-″.

mky ★★★★★
()
Ответ на: комментарий от mky

plate_files.tar — имя выбрано, чтобы оно попало в условие find и tar попытался его добавить в архив?

Имя файла выбрано от фонаря. Я не проверял это в командной строке. Да, стоит поменять.

то и вашему примеру не помешает ″--add-file″

Для верности стоит.

shell-script ★★★★★
()
Ответ на: комментарий от vel

Сортируем с помощью sort(1) полученный список, это ощутимо влияет на сжатие в положительную сторону;

Откуда дровишки?

Из личного опыта.

И где здесь сжатие?

Без сжатия сортировка ничего не даст, да.

mord0d ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.