скажем, я хотел бы найти все файлы с суффиксом .wzd в текущем каталоге и заархивировать все файлы, созданные одновременно, как я могу это сделать?
кстати, следующее не работает
find . -name "*.wzd" 2>/dev/null -exec tar -cvf wzd.tar {} \;
Используйте -print0
с find
для вывода имен файлов, разделенных нулем, и передайте в tar
используя -T - --null
чтобы прочитать имена файлов, разделенных нулем, из stdin.
find ... -print0 | tar ... -T - --null
backticks тоже будет работать:
tar -cvf wzd.tar `find . name "*.wzd" -printf "%f "`
-exec command {} +
Этот вариант действия -exec
запускает указанную команду для выбранных файлов, но командная строка создается путем добавления каждого выбранного имени файла в конце; общее количество вызовов команды будет намного меньше, чем количество совпавших файлов. Командная строка создается так же, как xargs
создает свои командные строки. В команде допускается только один экземпляр '{}'
. Команда выполняется в начальном каталоге.