Разница между "найти-удалить" и "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 будет продолжать удалять каталоги и файлы в каталогах по целевому пути, пока не найдет больше.