У меня простой вопрос, но я не могу найти или решить ответ. Я хочу создать 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.