Bash скрипт для gzip определенных расширений файлов - PullRequest
0 голосов
/ 05 июня 2018

Мне дали скрипт, который находит все html-файлы и сжимает их по отдельности в новом месте.

#!/bin/bash
for i in .html; do
gzip < $i > /backup/full/$i
done

Я не уверен, что полностью понимаю, как это работает, поскольку он работает только в том случае, еслинаходится в том же каталоге, что и файлы.Что если по какой-либо причине сценарий находится в другом месте?

Попытка добавить что-то вроде этого приводит к объединению как исходного, так и целевого путей, и появляется ошибка

for i in /html/directory/*.html; do
gzip < $i > /backup/full/$i
done

Спасибоза ваше время

1 Ответ

0 голосов
/ 05 июня 2018

Вам нужно удалить исходный префикс каталога при создании выходного имени файла.

gzip < "$i" > /backup/full/"$(basename "$i").gz"

или с помощью оператора расширения параметра:

gzip < "$i" > /backup/full/"${i##*/}".gz

Не забудьте процитировать ваши переменные, так что имена файлов с пробелами будут обрабатываться правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...