Yanıtlar:
Bunun için kıvırcık parantez kullanın:
ls /opt/somedir/{aa,bb,cc}
Daha fazla bilgi için destek desteğini okuyun .
Bash altında çalıştırın shopt -s extglob
(veya içine koyun ~/.bashrc
) ve olağandışı bir sözdizimi (ksh'den devralınan) ile düzenli ifadeler sağlayan ek desenler kullanabilirsiniz . Bu kalıpları elbette ksh'da ve sonra da zsh'de kullanabilirsiniz setopt ksh_glob
.
$ shopt -s extglob
$ ls /opt/somedir/@(aa|bb|cc|doesnotexist)
/opt/somedir/aa /opt/somedir/bb /opt/somedir/cc
Zsh'de doğrudan (foo|bar)
desen olarak kullanabilirsiniz .
% ls /opt/somedir/(aa|bb|cc|doesnotexist)
/opt/somedir/aa /opt/somedir/bb /opt/somedir/cc
Komutun tam yolla çağrıldığını unutmayın. Komutu kısa bir yolla çağırmak istiyorsanız, dizini bir şekilde değiştirmeniz gerekir ve (cd /opt/somedir && somecommand aa bb cc)
bu en kolay yoldur.
Şunu kullanarak filtre uygulayabilirsiniz egrep
:
ls | egrep '(aa|bb|cc)'
Tüm metin dosyalarını bulmak için:
ls | egrep '(aa|bb|cc).txt'
İlk olarak sizi yönlendiriyorum: Asla ayrıştırmayın , asla . İstediğinizi yapmanın uygun ve kanonik yolu bulmaktır .
Örneğin:
find /opt/somedir -regex '.*[aa|bb|cc].*' -exec mv '{}' ~/backup \;
Genellikle kullanmak -name
yerine -regex
daha basit olduğu gibi. Ancak bir normal ifade kullanım durumunuza uyar. Taşınmasını / silinmesini istediğiniz dosyalar olduklarından emin olmak için komutu ilk kez kullanmadan çalıştırmalısınız -exec
.