4

Я запускаю эту команду в окне Unix:

find . name CVS -exec rm -fr {} \;

Я хотел удалить любой файл с именем CVS в любом каталоге из текущего каталога, и он удалил все.

К счастью, все, что мне нужно было сделать, чтобы выздороветь, это проверить снова из CVS. Представьте, если бы я указал / в качестве начального каталога!

Я думаю, причина в том, что я использовал name вместо -name . Я просто перезапустить его как

find . -name CVS -exec rm -fr {} \;

И, кажется, работает нормально. Что же происходит , если name используется в отличие от -name

1 ответ1

7

Вы пропускаете тире перед -name , поэтому он искал пути с именами . , name и CVS , где точка указывает на текущую папку, следовательно, удаляя все.

Утилита find рекурсивно спускает дерево каталогов для каждого указанного пути.

Вы можете легко проверить с помощью echo перед командой, которую хотите запустить:

find . name CVS -exec echo rm -fr {} \;

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .