Сбой, если у пользователей нет файлов в их домашних каталогах - PullRequest
0 голосов
/ 20 ноября 2018

У меня проблема, когда я нахожу файлы в каталоге пользователей и удаляю их, но я получаю сообщение об ошибке «Нет такого файла или каталога», когда нет файлов.Может кто-нибудь предложить мне, как избежать этой ошибки?

[root@server1 ~]# find /home/*/* -name \* | xargs rm -rf 

find: '/ home / / ': Нет такого файла или каталога

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Не делай этого.ext2 может содержать любой символ, кроме \0 и / для имен файлов!Подумайте, что произойдет, если пользователь назовет файл

"hi etc"

Здесь rm -rf получит etc в качестве второго аргумента, поэтому, если ваш скрипт выполняется в /, вы удалитеваш каталог /etc.Существуют варианты для безопасной обработки имен файлов с пробелами, но некоторые из них не будут работать, если файл содержит символы новой строки - что, конечно, в равной степени возможно:

"hi
etc"

find имеет возможность удалять файлы (-delete), попробуйте использовать это.Это также решит вашу первоначальную проблему.Если это невозможно, прочтите документацию о find -print0 и xargs -0.

0 голосов
/ 20 ноября 2018

Когда нет файла, поиск поиска возвращает «Нет такого файла или каталога», потому что когда файла нет, описанная вами структура каталога не существует.Затем ошибка передается в rm с помощью «xargs».

find /home/ -name \* | xargs rm -rf 

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...