UNIX найти: как бороться с путями, содержащими пробелы - PullRequest
2 голосов
/ 05 ноября 2011

У меня есть сценарий оболочки с этой строкой:

rm -rf `find something`

Проблема в том, что если find возвращает путь с пробелом, rm, конечно, интерпретирует пространство как разделитель между двумя различными путями икоманда не выполняется.

Есть ли способ указать find заключать в кавычки пути, которые она возвращает, или что-то еще, чтобы решить эту проблему?

Ответы [ 4 ]

4 голосов
/ 05 ноября 2011

Чтобы быть на более безопасной стороне, вы можете использовать

$ find start_dir -print0 -name something | xargs --null rm -rf

для использования символа NUL (0) в качестве разделителя между файлами.

1 голос
/ 05 ноября 2011

find something -exec rm {} \; но я немного волнуюсь ...

0 голосов
/ 06 ноября 2011

Немного более быстрый способ (замените «что-то» на любые условия, которые вы хотите):

find something -exec rm -rf {} +
0 голосов
/ 05 ноября 2011

Вы можете сделать:

find start_dir -name something -print0 | xargs -0 /bin/rm -rf
...