Czym różni się to: sudo znajdź / usr / local / mysql / data -type f -exec rm {} ';'

2

Jaka jest różnica między tym:

sudo find /usr/local/mysql/data -type f -exec rm {} ';'

i to:

sudo rm -rf /usr/local/mysql/data
Meltemi
źródło

Odpowiedzi:

4
sudo find /usr/local/mysql/data -type f -exec rm {} ';'

sudo uruchomi go jako root, a następnie użyjesz find -type f aby pobrać wszystkie pliki ( tylko pliki ) w /usr/local/mysql/data

-exec rm{} zostanie wywołany dla każdego znalezionego elementu i usunie plik.

To usunie pliki rekurencyjnie, ale tak się stanie NIE usuwaj żadnych katalogów . Również nie to rm polecenie jest używane bez -f argument (siła)

rm -rf /usr/local/mysql/data

To polecenie całkowicie usunie wszystko z podanej ścieżki, katalogi i pliki są usuwane. -f jest używany, więc nie będzie monitów dla wydającego użytkownika.

S.Hoekstra
źródło
więc loki {} będzie zawierać wyniki find… -type f część wyciągu, gdy rm jest exec ?
Meltemi
tak, masz rację Meltemi. Podczas używania find w kombinacji -exec String {} zostanie zastąpiony pełną ścieżką do bieżącego pliku.
S.Hoekstra
2

Pierwszy usunie tylko pliki. Ta ostatnia usunie całą strukturę katalogów.

Ignacio Vazquez-Abrams
źródło
co jest ';' oznaczać?
Meltemi
1
Kończy -exec orzec.
Ignacio Vazquez-Abrams
to znaczy, możesz dodać kolejny -exec robiąc coś innego ...
akira
Oznacza to, że możesz dodać kolejny predykat bez interpretowania go jako argumentu polecenia w -exec orzec.
Ignacio Vazquez-Abrams
0

find /usr/local/mysql/data -type f -delete usunie tylko zwykłe pliki. Katalogi pozostaną

rm -rf /usr/local/mysql/data Usunę wszystko.

Vi.
źródło