1

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

tar -cvf allfiles.tar -T mylist.txt

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

Есть ли способ объединить "find" с командой tar, чтобы найти файлы в моем списке, где бы они ни находились в подкаталогах?

1 ответ1

5

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

Если это не имеет значения, вы можете сделать следующее:

find <main_directory> | grep -f mylist.txt

А затем, используйте список для вашей команды tar . Полная команда может выглядеть так:

tar cvf allfiles.tar -T <(find <main_directory> |
    grep -f mylist.txt --color=never)

Обратите внимание, что вы должны использовать --color=never , иначе, если цвета для вашего grep активны, вы бы отправили неверный ввод для tar .

Чтобы игнорировать различия в регистре, в этом случае в grep , который фактически фильтрует файлы, вы можете просто добавить флаг -i:

tar cvf allfiles.tar -T <(find <main_directory> |
    grep -i -f mylist.txt --color=never)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .