find [] No such file or directory

Что делать, если у тебя в названии файлов или папок на файловой системе содержат спецсимволы, например []?

Про попытке выполнить такую команду как:
find . -type f | xargs chmod 644
chmod: ./[TA]: No such file or directory
chmod: PRE: No such file or directory
chmod: RELEASE: No such file or directory
chmod: [TA]: No such file or directory

Получишь такие ошибки. Один из способов решения этой проблемы:

find . -type f -print0 | xargs -0 chmod 644

Расшифрую эту запись: после того, как find найдет совпадение согласно заданным правилам для поиска, он выдаст результат в STDOUT без изменений, но вместо \n в конце строки поставит \0, соотвественно xargs c ключем -0 понимает, что разделителем строки будет \0 вместо \n и корректно отрабатывает наличие в пути файлов пробелов, кавычек и слешей.

comments powered by HyperComments