Belirli bir dosya listesini nasıl chmod / chown edebilirim?


31

Bazı klasör izinlerini ayarlamak için bir .sh betiği yazmak istiyorum, ancak şöyle bir şey çalıştırabilir miyim acaba:

chown -644 ./one;/two;/three

chown'u defalarca çağırmak yerine, bir klasör listesi hazırlamak için.

Ayrıca, bir dosya listesi hazırlamak ve örneğin diğerlerini dışlamak için bir yol olabilir:

chown -R -664 ./*;!./cache

Umarım sözde komut satırlarım anlamlıdır.

Yanıtlar:


43

Neredeyse tüm Unix araçları bir dosya listesini seçenek olmayan argümanlar olarak kabul eder. Her zaman olduğu gibi, farklı argümanların boşlukla ayrılması gerekir:

chown 644 one two three

İkinci örnekte, eğer Bash kullanıyorsanız, basit

chown -R 644 !(cache)

yeterli olacak.

Bu yaklaşım genişletilmiş desen eşleşmesi gerektirir. Eğer devre dışı bırakılmışsa,

shopt -s extglob

Bakınız: Bash Referans Kılavuzu # Desen Eşleştirme


4

Mod-these.txt dosyasında bir dosya listesi yapın ve sonra çalıştırın:

chmod g+w `cat mod-these.txt`

veya burada başkaları tarafından açıklanan yöntemi kullanın:

chown 644 one two three

veya şehre ilk seçenekle gidin, ancak dosyadaki her satırı işleyin (bu örnekte: "/" (önceki boşluklarla) ile "./" ile değiştirin):

chmod g+w `sed 's/ \// .\//' update-writable.txt` 

2

kazanmak için regex !

find kullanarak, kendi kabuğunuzda veya kendi kullandığınız uygulamada mevcut olabilecek regex'i kullanmanın dışında düşünebileceğimin en iyi yoludur. ilk önce denedim:

touch one&touch two &touch three&find -name "one|two|three" -exec chown -644 {} \;

Ancak borunun bu durumda çalışmadığını göreceksiniz. Öğrenilecek başka bir üzücü şey ... chmod, chown, chgrp, et. ark. çoklu dosya / regex seçimi / dışlama özelliğini desteklemiyor ...
Bulduğum çözüm:
/programming/19111067/regex-match-either-string-in-linux-find-command

find \( -name one -o -name two -o -name three \) -exec chown -644 {} \;

bu yüzden, kazanma için çok fazla bir regex değil, en azından bir linerdeki bir programın argümanlarına bir dosya listesi enjekte etme yöntemimiz var.

() meta karakterlerinden ve her ek ad için -o parametresinin eklenmesinden kaçmanız gerektiğini unutmayın.

seyahatleriniz boyunca ilginizi çekebilecek diğer bağlantılar ve içerikler:
Çeşitli haberler - korn bourne ve arkadaşlarından notlar. - Dave Horner'ın Web Sitesi

Şerefe.
--dave


KISS kazan, basit ve aptal ol! hala temiz ve kolay olabilecek şeyleri karmaşıklaştırmaya gerek yok.
El-Mothafar

2

Değiştirmek istediğiniz dosyalar tek bir dizindeyse, onları istediğiniz kalıba yerleştirebilirsiniz.

Örneğin, tüm indirilen .run dosyalarının çalıştırılabilir olarak değiştirilebilmesi için pwd'ye ihtiyacım var:

chmod +x `ls *.run`
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.