Я запускаю эту команду на компьютере Unix:
find . name CVS -exec rm -fr {} \;
Я хотел удалить любой файл, вызванный CVS
в любом каталоге из текущего каталога, и он удалил все.
К счастью, все, что мне пришлось сделать для восстановления, это снова извлечь данные из CVS. Представьте, если бы я указал /
начальный каталог!
Я думаю, причина в том, что я использовал name
вместо -name
. Я просто перезапустил его как
find . -name CVS -exec rm -fr {} \;
И, кажется, это работает нормально. Что именно происходит, если name
используется вместо -name
?
решение1
Вы пропустили тире раньше -name
, поэтому он искалпутис именем .
, name
и CVS
, где точка ссылается на текущую папку, следовательно, удаляя все.
Утилита find рекурсивно просматривает дерево каталогов для каждого указанного пути.
Вы можете легко проверить это, используя echo
перед командой, которую хотите выполнить:
найти . имя CVS -exec echo rm -fr {} \;