Tìm kiếm tệp KHÔNG thuộc sở hữu của ai đó


182

Tôi đang tìm cách đệ quy xem qua các thư mục để tìm các tệp KHÔNG thuộc sở hữu của một người dùng cụ thể và tôi không chắc cách viết này.

Câu trả lời:


274

Tiện ích find (1) có các nguyên tắc có thể được phủ định ("đảo ngược") bằng cách sử dụng "!" nhà điều hành. Tuy nhiên, người ta phải thoát khỏi sự phủ định bằng dấu gạch chéo ngược vì nó là một metacharacter vỏ. Kết quả:

find . \! -user foo -print

6
thoát khỏi !dường như là tùy chọn
ngờ1ejack

1
đường ống đầu ra để xargs -I{} -P3 -- ${cmdhere} {}có thể có $ {cmdhere} hoạt động song song trên mỗi tệp. cmdhere :: = dụng cụ unix tiêu chuẩn; tiêu chuẩn unix utils :: = chmod, chown, stat, ls, ...
Dwight Spencer

1
@sorin bạn có nghĩa là find . ...hoặc đường ống đến xargscách thứ nhất hoặc thứ hai?
Kev

3
find có cờ -exec -> find . ! -user foo -exec chown <owner>:<group> {} \;
pastephens

1
Làm thế nào để thêm thông tin chủ sở hữu như đầu ra?
Đức Trần

38

Tìm kiếm tệp KHÔNG thuộc sở hữu của ai đó

Những người khác đã trả lời câu hỏi "KHÔNG thuộc sở hữu của một người dùng cụ thể" trong cơ thể. Đây là một câu trả lời cho câu hỏi giật gân nhưng chưa được cung cấp:

$ find / -nouser

Bạn có thể sử dụng nó như vậy:

$ sudo find /var/www -nouser -exec chown root:apache {} \;

Và một liên quan:

$ find / -nogroup

3
Tôi sẽ cho bạn một phiếu bầu cho tính kỹ thuật, nhưng mọi người thường nói "không thuộc sở hữu của ai" nếu họ có nghĩa là những gì bạn đang diễn giải.
Shibumi

2
@Shibumi - Vâng, âm thanh phù hợp với những sợi tóc chẻ ngọn. Vấn đề tôi gặp phải là, tôi cần tìm các tệp theo nghĩa đen không thuộc sở hữu của bất kỳ người dùng nào. Nó nổi lên sau khi làm mới và di chuyển máy chủ web. Một số id người dùng / nhóm đã thay đổi, vì vậy tôi cần phải viết kịch bản.
jww

12

-usertìm thấy bởi người dùng hoặc ID người dùng và !đảo ngược vị ngữ. Vì vậy, ! -user ....


2
Bị từ chối vì nó không thêm bất cứ điều gì vào câu trả lời được chấp nhận và nó che dấu các câu trả lời có thể khác (chẳng hạn như mẫu hình cầu zsh bên dưới).
Ulysse BN

9

Bạn có thể sử dụng điều này:

find <dir> ! -user <username> 

2
Bị từ chối vì nó không thêm bất cứ điều gì vào câu trả lời được chấp nhận và nó che dấu các câu trả lời có thể khác (chẳng hạn như mẫu hình cầu zsh bên dưới).
Ulysse BN

5

Sử dụng z-shell (zsh) bạn có thể sử dụng

ls -laR *(^U)

hoặc là

ls -la **/*(^U)

để tìm kiếm tất cả các tệp đệ quy không thuộc sở hữu của bạn.


Đúng là lệnh trên sẽ không liệt kê các tệp chấm, ngay cả với -acờ vì mở rộng ký tự đại diện. Để bắt các tệp chấm sử dụng dotglobtùy chọn zsh : setopt dotglob. Trong một dòng : (setopt dotglob; ls **/*(^U) ). Các dấu ngoặc đơn phải chạy trong một khung con để bạn không phải chạy setopt nodotglobsau khi hoàn thành.
Zorawar
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.