Давайте предположим, что у меня есть следующая структура каталоговКак исключить определенные файлы с помощью команды tar?
dir/
├── subdir
│ ├── dir
│ │ └── TODO.txt
│ └── TODO.txt
└── TODO.txt
Я желаю связывать dir/
рекурсивно в тарболла с командой tar
на Linux, но я хочу, чтобы исключить корень todo.txt. Как я могу указать это с относительным путем?
Попытка # 1
tar -czf dir.tar.gz dir/ --exclude='TODO.txt'
Не работает: он избавляется от каждого todo.txt в результате тарболла:
dir/
└── subdir
└── dir
Попытка # 2
tar -czf dir.tar.gz dir/ --exclude='dir/TODO.txt'
Это также не удается, потому что подкаталог dir
также соответствует этому шаблону. Полученный тарбол, следовательно, содержит
dir/
└── subdir
├── dir
└── TODO.txt
Есть ли способ, я могу точно определить, что я хочу, чтобы исключить корень todo.txt с относительным путем?
Разве вы не можете просто перенести этот один файл в стороне во время создания архива? – arkascha
В противном случае вы можете подать команду 'tar' с выводом' find', который вы фильтруете с помощью 'grep -v', который позволяет привязать шаблон к началу хита. – arkascha
Неправильный сайт, а не вопрос программирования. – tink