4

скажем, я хотел бы найти все файлы с суффиксом .wzd в текущем каталоге и заархивировать все файлы, созданные одновременно, как я могу это сделать?

кстати, следующее не работает

find . -name "*.wzd" 2>/dev/null -exec tar -cvf wzd.tar {} \;

3 ответа3

5

Используйте -print0 с find для вывода имен файлов, разделенных нулем, и передайте в tar используя -T - --null чтобы прочитать имена файлов, разделенных нулем, из stdin.

find ... -print0 | tar ... -T - --null
2

backticks тоже будет работать:

tar -cvf wzd.tar `find . name "*.wzd" -printf "%f "`
0

-exec command {} +

Этот вариант действия -exec запускает указанную команду для выбранных файлов, но командная строка создается путем добавления каждого выбранного имени файла в конце; общее количество вызовов команды будет намного меньше, чем количество совпавших файлов. Командная строка создается так же, как xargs создает свои командные строки. В команде допускается только один экземпляр '{}' . Команда выполняется в начальном каталоге.

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