Birisine ait OLMAYAN dosyalar aranıyor


182

Ben belirli bir kullanıcının sahibi değil dosyaları bulmak için dizinleri özyinelemeli bakmak ve ben nasıl yazmak için emin değilim.

Yanıtlar:


274

Find (1) yardımcı programı, "!" Kullanılarak reddedilebilen ("ters çevrilebilir") primerlere sahiptir. Şebeke. Ancak komut isteminde, bir kabuk metakaraktüsü olduğu için olumsuzlamadan ters eğik çizgiden kaçmak gerekir. Sonuç:

find . \! -user foo -print

6
kaçan !isteğe bağlı gibi görünüyor
doub1ejack

1
çıktıyı borulama, xargs -I{} -P3 -- ${cmdhere} {}her dosyada paralel olarak $ {cmdhere} çalıştırabilir. cmdhere :: = standart unix araçları; standart unix utils :: = chmod, chown, stat, ls, ...
Dwight Spencer

1
@sorin mi yani birinci veya ikinci yolla find . ...borulama xargs?
Kev

3
bul find . ! -user foo -exec chown <owner>:<group> {} \;
-exec

1
sahip bilgilerini çıktı olarak nasıl ekleyebilirim?
Duc Tran

38

Birisine ait OLMAYAN dosyalar aranıyor

Diğerleri , vücutta "Belirli bir kullanıcının sahibi OLMADI " sorusunu yanıtladı . Başlıca soruyu cevaplayan ancak henüz sağlanmayan bir soru:

$ find / -nouser

Şöyle kullanabilirsiniz:

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

Ve ilgili bir tane:

$ find / -nogroup

3
Size tekniklik için bir oy vereceğim, ancak insanlar yorumladığınız şeyi kastetmiş olsalar genellikle "kimseye ait değil" derlerdi.
Shibumi

2
@Shibumi - Evet, saçları bölenler için doğru geliyor. Karşılaştığım sorun, kelimenin tam anlamıyla herhangi bir kullanıcıya ait olmayan dosyaları bulmam gerekti. Bir web sunucusunun yenilenmesi ve taşınmasından sonra ortaya çıktı. Bazı kullanıcı / grup kimlikleri değişti, bu yüzden bir chown komut dosyası gerekiyordu.
jww

12

-userkullanıcı veya kullanıcı kimliğine göre bulur ve !yüklemi tersine çevirir. Yani ! -user ...,.


2
Kabul edilen cevaba hiçbir şey eklemediği ve diğer olası cevapları (aşağıdaki zsh glob paterni gibi) maskelediği için indirildi.
Ulysse BN

9

Bunu kullanabilirsiniz:

find <dir> ! -user <username> 

2
Kabul edilen cevaba hiçbir şey eklemediği ve diğer olası cevapları (aşağıdaki zsh glob paterni gibi) maskelediği için indirildi.
Ulysse BN

5

Z-shell (zsh) kullanarak şunları kullanabilirsiniz:

ls -laR *(^U)

veya

ls -la **/*(^U)

size ait olmayan özyinelemeli tüm dosyaları aramak için.


Yukarıdaki komutun -a, joker karakter genişletmesi nedeniyle bayrakla bile nokta dosyalarını listelemeyeceği doğrudur . Nokta yakalamak için dosyaları zsh kullanmak dotglobseçeneği: setopt dotglob. Bir satırda: (setopt dotglob; ls **/*(^U) ). Parantezler bir alt kabukta çalıştırılacaktır, böylece setopt nodotglobbitirdikten sonra çalıştırmanız gerekmez .
Zorawar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.