Разница между "найти-удалить" и "rm-rf"?
Я хочу удалить файлы из определенной директории рекурсивно. Итак, я использовал
find . -wholename "*.txt" -delete
мы также можем удалить файлы с помощью
rm -rf *.txt
в чем разница между удалением файла, используя rm
и find
??
3 ответов
find . -wholename abd.txt -delete
пытается удалить все файлы с именем abd.txt
что где-то в дереве каталогов .
rm -rf abd.txt
пытается удалить abd.txt
, и если это каталог, все файлы и каталоги во всем дереве.
пока find -wholename GLOBPATTERN
пытается сопоставить каждый файл ниже текущего каталога (независимо от глубины), Глоб, который вы использовали rm
команда сопоставляется только с файлами, которые являются напрямую (глубина 1) в текущем каталоге.
кстати. вам не нужно -r
переключатель rm
Если вы не хотите, чтобы рекурсивно удалить каталог (из-за .txt
расширение, я полагаю, вы хотите удалить только обычные файлы)
find
использовал с -delete
, находит файлы и удаляет их. Find
команда принимает путь для поиска файлов, а затем -delete
флаг удаляет файлы, найденные в этом пути. Таким образом, вы можете сказать, что find больше выборочное удаление
, тогда как rm -rf
команда удаляет файлы / каталоги рекурсивно, несмотря ни на что. Это значит rm
удалить все файлы и папки по определенному пути. -r
стенды для рекурсия и -f
принудительно удалить. Итак,rm
в сочетании с -rf
будет продолжать удалять каталоги и файлы в каталогах по целевому пути, пока не найдет больше.