locate filename
find -name '*filename*'
echo **/*filename*
ls -ld **/*filename*
(Ana şartlar ve koşullar için okumaya devam edin. İnce baskı için kılavuzu okuyun.)
Bir dizinin içeriğini listelemek, türünün ikincil bir özelliğidir ls
. Ana işi ls
, karmaşıklığının çoğunu üstlenen iş, ekranını ince ayar yapmaktır. (El kitabına bakın ve hangi dosyaların görüntüleneceğini seçmeyle ilgili seçeneklerin sayısını ve her dosya hakkında hangi bilgilerin görüntüleneceğini ve ekranın nasıl biçimlendirildiğini kontrol eden seçeneklerin sayısını karşılaştırın. Bu, hem GNU ls ' Linux'ta ve ilk günlerden beri daha az seçeneğe sahip diğer sistemlerde bulabilirsiniz .)
Varsayılan modu, ls
bir dizini ilettiğinizde o dizindeki dosyaları listelemesidir. Başka bir dosya türünü iletirseniz (normal dosya, sembolik bağlantı vb.), Yalnızca o dosyayı listeler. (Bu, her bağımsız değişken için ayrı ayrı geçerlidir.) Seçenek hiçbir zaman bir dizine inmemesini -d
söyler ls
.
ls
-R
dizinleri özyinelemeli olarak listelemesini söyleyen bir seçeneğe sahiptir. Ancak, uygulanabilirliği sınırlıdır ve çıktıda fazla filtrelemeye izin vermez.
Desen eşleştirmesini gerçekleştiren ilk araç kabuğun kendisidir. Başka bir komuta ihtiyacınız yoktur: joker karakterlerinizi yazmanız yeterlidir. Buna globbing denir .
echo *filename*
Geleneksel olarak, joker karakterler geçerli dizin (veya belirtilen dizin:) ile sınırlıydı echo /some/where/*filename*
. A *
, herhangi bir dosya adıyla veya dosya adının herhangi bir bölümüyle *.txt
eşleşir , ancak eşleşmez foo/bar.txt
. Modern mermiler, **/
“bu dizinde veya altındaki herhangi bir dizinde (özyineli olarak)” anlamına gelen deseni ekledi . Bash ile, tarihsel uyumluluk nedenleriyle, bu özelliğin açıkça etkinleştirilmesi gerekir shopt -s globstar
(bu satırı içine koyabilirsiniz ~/.bashrc
).
echo **/*filename*
echo
Komut sadece size kabuk arka tarafından oluşturulan dosya adları listesini yankılanır. İstisna olarak, eşleşen dosya adı yoksa, joker karakter deseni bash'da değişmeden kalır (siz ayarlamadıysanız shopt -s nullglob
, bu durumda desen boş bir listeye genişler) ve zsh bir hata sinyali (siz ayarlamadığınız sürece setopt nullglob
veya setopt no_no_match
bu da desenin değişmeden kalmasına neden olur).
Yine ls
de seçenekleri için kullanmak isteyebilirsiniz . Örneğin ls
, dosyanın yapısı veya izinleri (dizin, yürütülebilir vb.) Hakkında renklerle göstergeler verebilir. Dosyanın tarihini, boyutunu ve sahipliğini ile görüntülemek isteyebilirsiniz ls -l
. Daha fazla seçenek için kılavuza bakın.
Bir dizin ağacında dosya aramak için kullanılan geleneksel komuttur find
. Hangi dosyaların görüntüleneceğini ve bunlarla ne yapılacağını kontrol etmek için birçok seçenekle birlikte gelir. Örneğin, adı *filename*
geçerli dizindeki ve alt dizinlerindeki desenle eşleşen dosyaları aramak ve adlarını yazdırmak için:
find /some/dir -name '*filename*' -print
-print
bir eylemdir (diğer eylemlerin çoğu dosyada bir komut yürütmekten oluşur); bir eylemde bulunmazsanız -print
, ima edilir. Ayrıca, geçilecek herhangi bir dizin belirtmezseniz ( /some/dir
yukarıda), geçerli dizin ima edilir. Koşul -name '*filename'
, yalnızca adı bu kalıpla eşleşen dosyaları listelediğini (veya üzerinde işlem yaptığını) söylüyor; -mtime -1
son 24 saat içinde değiştirilen dosyaları eşleştirmek gibi birçok filtre daha vardır . Bazen -name '*filename*'
yalnızca joker karakter geçerli dizindeki herhangi bir dosyayla eşleşmezse tırnak işaretlerini atlayabilirsiniz (yukarıya bakın). Sonuçta, kısa form
find -name '*filename*'
Bir dosyanın adını (bir kısmını) bildiğinizde başka bir yararlı araçtır locate
. Bu araç, dosya adları veritabanını sorgular. Tipik sistemlerde, her gece yenilenir. Avantajı locate
over find /
o çok daha hızlı olmasıdır. Bir dezavantajı, bilgisinin eski olabileceğidir. locate
Çok kullanıcılı sistemlerde davranışlarında farklılık gösteren birkaç uygulama vardır : temel locate
program yalnızca herkese açık olarak okunabilir dosyaları endeksler ( updatedb
hesabınızdaki tüm dosyaları endeksleyen ikinci bir veritabanı oluşturmak için tamamlayıcıyı çalıştırmak isteyebilirsiniz ); tüm dosyaları dizine ekleyen ve locate
programın yalnızca görebileceğiniz dosyaları döndürmek için veritabanını filtrelemesini sağlayan başka sürümler (mlocate, slocate) vardır .
locate filename
Bazen bir dosyanın dağıtımınızdaki bir paket tarafından sağlandığını düşünürsünüz, dosyanın adını (bir kısmını) bilirsiniz, ancak paketinizin adını bilmezsiniz ve paketi yüklemek istersiniz. Birçok dağıtım bunun için bir araç sağlar. Ubuntu'da öyle apt-file search filename
. Diğer sistemlerde eşdeğer komutlar için Pacman Rosetta'yı kontrol edin .
ls
?