Tüm gizli dosyalar için nasıl mücadele etmeliyim?


22

chownBir dizindeki tüm gizli dosyalar üzerinde bazı eylemler (örneğin ) yapmak istiyorum .

Bunun biliyoruz .*olduğu değil aynı zamanda güncel bulacaksınız çünkü iyi bir fikir .ve ebeveyn ..dizinleri (bunu biliyorum rmüzerinde çalışmasına başarısız olur .ve ..ancak dahil diğer komutlar, chownve chmodmutlu geçerli olacak)

Ancak tüm gizli dosyalarımın farklı isimleri var!

Hariç ederken nasıl tüm gizli dosyalar için topak olmalı .ve ..?

Yanıtlar:


20

Aşağıdaki extglobdeseni kullanabilirsiniz :

.@(!(.|))
  • ..ilk baştaki harflerle eşleşir

  • @()bir extglobkalıptır, içinde yalnızca bir kalıp olduğu için, içindeki kalıplardan birine uyacaktır.

  • !(.|)extglobhiç ya da hiç olmayan herhangi bir dosyayla eşleşen başka bir kalıptır (iç içe geçmiş) .; Biz eşleşti gibi .zaten başında, bütün bu örüntü tüm dosyalar ile başlayan maç olacak .hariç .ve ...

extglobbashUbuntu'da varsayılan olarak etkileşimli oturumlarında etkindir . Değilse, önce etkinleştirin:

shopt -s extglob

Örnek:

$ echo .@(!(.|))
.bar .foo .spam

Bu açıkça öğrenmem gereken harika bir şey! Öğretiminiz için teşekkürler
Zanna

@Zanna Yardım edebilirim sevindim :)
heemayl

2
Amacı nedir @()? Basit .!(.|)aynı şekilde çalışıyor gibi görünüyor.
Kyle Strand

1
Bunun eski olduğunu biliyorum ama @KyleStrand ile aynı sorum var. Testlerimde !(.|)aynı şekilde çalışıyor. @()Bu bağlamda herhangi bir amaç var mı ?
Paddy Landau

Patlama karakteri bir olumsuzlama mı? Bahsedilmedi ve açıklamanızı okuduğumda, modelin nokta ve iki katına eşleştiği izlenimini edindim, ama sadece bu ikisi dışında bir başlangıç ​​noktasıyla eşleşen dosyaları açıkça tanımlıyorsunuz.
kullanıcı bilinmeyen,

20
 GLOBIGNORE=".:.."

gizlemek için. ve .. dizinler. Bu aynı zamanda dotglobseçeneği de belirler : *hem gizli hem de gizli olmayan dosyalarla eşleşir.

Ayrıca yapabilirsiniz

shopt -s dotglob

Gilles :)


9

findBurada bir komut kullanabilirsiniz . Örneğin bir şey

find -type f -name ".*" -exec chmod 775 {} \;

Bu gizli dosyaları bulur ve izinleri değiştirir


Yorumu @gerrit tarafından eklemek için düzenleyin:

find -type f -maxdepth 1 -name ".*" -exec chmod 775 {} \;

Bu, art arda arama yapmak yerine aramayı geçerli dizinde sınırlandırır.


4
-maxdepth 1Sorudaki ve diğer cevaplardaki davranışlarla daha yakından eşleşmesi için buraya bir eklemek isteyebilirsiniz .
gerrit
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.