Назад | Перейти на главную страницу

Как исключить файлы из архива TAR с помощью регулярных выражений?

У меня простой вопрос, но я не могу найти или решить ответ. Я хочу создать tar-архив, но хочу исключить из него некоторые файлы с помощью регулярного выражения.

Пример исключаемого файла: 68x640X480.jpg

Я пробовал это безуспешно:

tar cvf test.tar --exclude=[0-9]+x[0-9X]+\.jpg /data/foto

Кто-нибудь может помочь?

Вы можете использовать дополнительные инструменты, например find и egrep:

find directory/ -type f -print | egrep -v '[0-9]+x[0-9X]+\.jpg' | tar cvfz directory.tar.gz -T -

Недостатком вышеупомянутого метода является то, что он не будет работать для всех возможных имен файлов. Еще одна возможность - использовать встроенную функцию исключения из tar:

tar -czvf directory.tar.gz --exclude='*x*X*.jpg' directory

К сожалению, второй метод не работает с регулярными выражениями, а только с подстановочными знаками.

Может тебе стоит попробовать cpio

https://www.gnu.org/software/cpio/manual/cpio.html

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

ls |sed   '/[0-9]*x[0-9]*X.*/d' >/tmp/files

Затем вы можете использовать его в качестве входных данных для cpio.