Sự khác biệt giữa cái này: sudo find / usr / local / mysql / data -type f -exec rm {} ';'


2

Sự khác biệt giữa cái này là gì:

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

và điều này:

sudo rm -rf /usr/local/mysql/data

Câu trả lời:


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

sudo sẽ làm cho nó chạy như root, sau đó bạn sử dụng find -type fđể có được tất cả các tệp ( chỉ các tệp ) trong/usr/local/mysql/data

các -exec rm{}sẽ được gọi cho từng hạng mục được tìm thấy và sẽ loại bỏ các tập tin.

Vì vậy, điều này sẽ loại bỏ các tập tin đệ quy nhưng nó sẽ KHÔNG xóa bất kỳ thư mục . Cũng không phải là rmlệnh được sử dụng mà không có -fđối số (lực lượng)

rm -rf /usr/local/mysql/data

Lệnh này sẽ loại bỏ hoàn toàn mọi thứ trong đường dẫn đã cho, các thư mục và tệp được xóa. -fđược sử dụng nên sẽ không có lời nhắc nào cho người dùng phát hành.


vậy các curlies {} sẽ chứa kết quả của find… -type fphần của câu lệnh khi rmđược sử dụng exec?
Meltemi

vâng, bạn đúng Meltemi. Khi sử dụng find kết hợp -exec, Chuỗi {} sẽ được thay thế bằng đường dẫn đầy đủ đến tệp hiện tại.
S.Hoekstra

2

Các cựu sẽ chỉ loại bỏ các tập tin. Cái sau sẽ loại bỏ toàn bộ cấu trúc thư mục.


những gì ';'có ý nghĩa?
Meltemi

1
Nó chấm dứt -execvị ngữ.
Ignacio Vazquez-Abrams

có nghĩa là, bạn có thể thêm một -exec làm việc khác ...
akira

Có nghĩa là bạn có thể thêm một vị từ khác mà không được hiểu là một đối số cho lệnh trong -execvị ngữ.
Ignacio Vazquez-Abrams

0

find /usr/local/mysql/data -type f -deletesẽ chỉ xóa các tập tin thông thường. Thư mục sẽ ở lại

rm -rf /usr/local/mysql/data Sẽ loại bỏ bất cứ điều gì.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.