Как я могу эмулировать функцию -R "zip", но в gzip и xz?

Я знаю, если вы нажмете ? он отобразит список дисков, и вы можете указать это с помощью ufs :/dev/ad4s1a (, если это то место, где находится pfsense ).. Как только это сработает и загрузится, вы можете отредактировать файл и обновить его до того, что вы нашли точку загрузки. Я сейчас пытаюсь найти файл для изменения

0
04.01.2020, 01:57
1 ответ

Объединение find, tarи утилит сжатия:

Сgzip:

find. -type f -name bigfile | tar cfz bigfile.tgz -T -

или сxz:

find. -type f -name bigfile | tar cfJ bigfile.txz -T -

findрекурсивно ищет все файлы с именем bigfileв текущем/рабочем каталоге, и полученные пути передаются в tar, который создает архив и сжимает его.

Эти команды подходят для примера, приведенного в вопросе. Различные шаблоны, переданные в zip -R, потребуют соответствующих аргументов, переданных в find.

Также имейте в виду, что это не будет работать для всех возможных имен файлов; вам следует рассмотреть вариант --null и загрузить tar из find -print0.

Кроме того, опция tar«-T» доступна не во всех системах (, например, в HP -UX ).

РЕДАКТИРОВАТЬ 1

В отличие, например, от zip, rar или 7-zip, gzip и xz не способны сжимать несколько файлов в один.

Цитирование справочной страницы gzip:

If you wish to create a single archive file with multiple members so that members can later be extracted independently, use an archiver such as tar or zip. GNU tar supports the -z option to invoke gzip transparently. gzip is designed as a complement to tar, not as a replacement.

См. Как сжать несколько файлов в один gz-файл? и Как сжать несколько файлов в архив.xz? .

РЕДАКТИРОВАТЬ2

Если целью OP является создание gzip-файла для каждого найденного файла, который удовлетворяет критериям поиска, следует ввести следующую команду:

find. -type f -name bigfile | gzip > bigfile.gz

Для файла xz:

find. -type f -name bigfile | xz > bigfile.xz

Будет создан сжатый файл в том же каталоге для каждого файла, который удовлетворяет критериям поиска, оставляя исходный файл «нетронутым».

РЕДАКТИРОВАТЬ3

Как предложил @Kusalananda , если в bashсначала сделать:

shopt -s globstar 

, а затем введите команду:

tar -c -zf bigfile.tgz./**/bigfile

Будет создан один файл архива с несколькими файлами, найденными в подкаталогах, которые удовлетворяют критериям поиска.

Если цель состоит в том, чтобы создать один сжатый файл для каждого файла, найденного в подкаталогах, который удовлетворяет критериям поиска,после ввода команды shoptвы можете просто ввести:

gzip./**/bigfile
1
28.01.2020, 02:38

Теги

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