Обычная передача списка файлов через
xargs небезопасна. Если имя файла содержит пробел, перевод строки, кавычки или другие специальные символы, команда может обработать его неправильно.Чтобы исключить эту проблему,
find умеет разделять имена файлов нулевым байтом:$ find . -type f -print0
Теперь этот поток можно безопасно передать в
xargs:$ find . -type f -print0 | xargs -0 sha256sum
Так будут корректно обработаны любые допустимые имена файлов, независимо от пробелов, табуляции и других символов.
Тот же приём подходит для удаления файлов:
$ find . -type f -print0 | xargs -0 rm
И для передачи файлов любой другой программе:
$ find . -type f -print0 | xargs -0 grep "TODO"
Именно связка
-print0 и -0 считается стандартным способом безопасной обработки имён файлов в Unix-подобных системах.🔥 Если пишете shell-сценарии или автоматизацию, этот приём избавляет от целого класса трудноуловимых ошибок.
🚪 Linux Ready | #совет
