Linux'ta Joker Karakterler Kullanarak Geçerli ve Alt Dizinlerdeki Dosyaları Tekrarlı Olarak Bulma

Shell

Linux'ta Verimli Dosya Arama

Linux ile çalışırken, dizinlerdeki dosyaları bulmak yaygın ve bazen karmaşık bir görev olabilir. Özyinelemeli arama yöntemlerini ve joker karakter eşleştirmeyi kullanmak, bu süreci önemli ölçüde kolaylaştırabilir. Bu araçlar hem acemi hem de ileri düzey kullanıcılar için çok değerlidir ve dosya yönetimini daha verimli hale getirir.

Bu kılavuzda, geçerli dizindeki ve alt dizinlerindeki tüm dosyaları belirli joker karakter desenlerine göre yinelemeli olarak nasıl bulacağımızı keşfedeceğiz. İster büyük veri kümelerini düzenliyor olun ister yalnızca birkaç dosyayı bulmaya çalışıyor olun, bu yöntemler komut satırı yeterliliğinizi artıracaktır.

Emretmek Tanım
find Dizin hiyerarşisindeki dosya ve dizinleri arar
-name Joker karakter deseni kullanarak dosyaları adlarına göre eşleştirir
os.walk Yukarıdan aşağıya veya aşağıdan yukarıya doğru yürüyerek bir dizin ağacındaki dosya adlarını oluşturur
fnmatch.fnmatch Bir dosya adının veya dizenin joker karakter deseniyle eşleşip eşleşmediğini test eder
param PowerShell betikleri ve işlevleri için parametreleri tanımlar
Get-ChildItem Belirtilen bir veya daha fazla konumdaki öğeleri alır
-Recurse Komuta dizinler arasında yinelemeli olarak arama yapması talimatını verir
-Filter Öğeleri joker karakter ifadesi kullanarak filtreler

Özyinelemeli Dosya Arama Komut Dosyalarının Ayrıntılı Açıklaması

İlk komut dosyası, geçerli dizindeki ve alt dizinlerindeki dosyaları belirli bir joker karakter desenine göre bulmak için bir kabuk komut dosyası kullanır. Betiğin yorumlayıcısını belirtmek için shebang ile başlar. Betik daha sonra kullanıcının if [ $# -eq 0 ] kullanarak bağımsız değişken olarak bir joker karakter modeli sağlayıp sağlamadığını kontrol eder. Değilse kullanıcıdan doğru kullanımı ister ve çıkar. Bir kalıp sağlanırsa, komut dosyası, dosyaları aramak için -type f seçeneğiyle birlikte find komutunu ve joker karakter modeliyle eşleştirmek için -name seçeneğini kullanır. Bul komutu, Unix tabanlı sistemlerde dosyaları yinelemeli olarak aramak için oldukça etkilidir. Komut dosyası, başarılı yürütmeyi belirtmek için çıkış 0 ile sona erer.

İkinci komut dosyası, dosyaları joker karakter desenine göre yinelemeli olarak arayan bir Python komut dosyasıdır. İşletim sistemiyle etkileşim kurmak ve komut satırı argümanlarını yönetmek için gerekli olan os ve sys modüllerinin içe aktarılmasıyla başlar. Komut dosyası, kullanıcının bir joker karakter modeli sağlayıp sağlamadığını kontrol eder; değilse doğru kullanımı yazdırır ve çıkar. os.walk kullanmak, betiğin dizin ağacında dolaşmasına olanak tanır. fnmatch.fnmatch, bulunan her dosya için dosya adının joker karakter deseniyle eşleşip eşleşmediğini kontrol ederek eşleşen dosya yollarını yazdırır. Bu komut dosyası, komut dosyası oluşturmak için Python'u tercih eden ve kodlarında daha fazla esneklik ve okunabilirliğe ihtiyaç duyan kullanıcılar için kullanışlıdır.

Üçüncü komut dosyası, Windows sistemlerinde benzer bir görevi gerçekleştirmek için PowerShell'i kullanır. Betik, joker karakter desenine ilişkin bir parametre tanımlamak için param ifadesini kullanır. Desen sağlanmadığı takdirde kullanıcıya doğru kullanımı sorar. Get-ChildItem cmdlet'i -Recurse bayrağıyla birleştiğinde, belirtilen konumlardaki öğeleri yinelemeli olarak alır. -Filter parametresi belirli dosyaları eşleştirmek için joker karakter desenini uygular. Bu komut dosyası, dosyaları verimli bir şekilde yönetmek ve aramak için PowerShell'in güçlü ve çok yönlü komut dosyası oluşturma özelliklerinden yararlanan, Windows ortamlarında çalışan kullanıcılar için idealdir.

Bul Komutunu Kullanarak Özyinelemeli Dosya Arama

Linux'ta Kabuk Komut Dosyası Oluşturma

#!/bin/bash
# Script to recursively find files based on wildcard matching

# Check if the user has provided a wildcard pattern
if [ $# -eq 0 ]
then
  echo "Usage: $0 <wildcard-pattern>"
  exit 1
fi

# Find and print the files matching the pattern
find . -type f -name "$1"

exit 0

Özyinelemeli Dosya Arama için Python Komut Dosyası

Python Komut Dosyası Oluşturma

import os
import sys

# Check if the user has provided a wildcard pattern
if len(sys.argv) != 2:
    print("Usage: python script.py <wildcard-pattern>")
    sys.exit(1)

# Get the wildcard pattern from the command line argument
pattern = sys.argv[1]

# Walk through the directory tree
for root, dirs, files in os.walk("."):
    for file in files:
        if fnmatch.fnmatch(file, pattern):
            print(os.path.join(root, file))

Özyinelemeli Dosya Arama için PowerShell Betiği

PowerShell Komut Dosyası Oluşturma

# Check if the user has provided a wildcard pattern
param (
    [string]$pattern
)

if (-not $pattern) {
    Write-Host "Usage: .\script.ps1 -pattern '<wildcard-pattern>'"
    exit 1
}

# Get the files matching the pattern
Get-ChildItem -Recurse -File -Filter $pattern

Özyinelemeli Dosya Arama için Gelişmiş Teknikler

Daha önce tartışılan temel yinelemeli dosya arama yöntemlerine ek olarak, Linux'ta dosya arama yeteneklerinizi geliştirebilecek çeşitli gelişmiş teknikler vardır. Bu yöntemlerden biri, belirli metin kalıplarını içeren dosyaları aramak için grep komutunu find ile birlikte kullanmayı içerir. Örneğin find komutunu kullanabilirsiniz. -type f -name "*.txt" -exec grep "arama_metni" {} + "arama_metni" dizesini içeren tüm metin dosyalarını bulmak için. Bu, özellikle büyük kod tabanlarında veya günlük dosyalarında verimli bir şekilde arama yapması gereken geliştiriciler ve sistem yöneticileri için kullanışlıdır.

Özyinelemeli dosya aramaları için bir diğer güçlü araç, bul'un basit, hızlı ve kullanıcı dostu bir alternatifi olan fd'dir. fd mantıklı varsayılanlarla birlikte gelir ve sezgisel bir sözdizimi sağlar. Örneğin, fd "pattern" komutu yinelemeli olarak kalıpla eşleşen dosyaları arayacaktır ve varsayılan olarak normal ifadeleri destekler. Ayrıca fd, paralelleştirilmiş dosya sistemi geçişi nedeniyle birçok senaryoda find'den daha hızlıdır. Kullanıcı dostu bir arayüze sahip gelişmiş arama özelliklerine ihtiyaç duyan kullanıcılar için fd mükemmel bir seçim olabilir.

  1. Belirli bir uzantıya sahip dosyaları yinelemeli olarak nasıl arayabilirim?
  2. bul komutunu kullanın. -type f -name "*.extension" burada "uzantı", aradığınız dosya uzantısıdır.
  3. Son 7 gün içinde değiştirilen dosyaları arayabilir miyim?
  4. Evet, bul komutunu kullanın. -son 7 gün içinde değiştirilen dosyaları bulmak için f -mtime -7 yazın.
  5. Belirli dizinleri aramanın dışında nasıl bırakabilirim?
  6. Dizinleri hariç tutmak için -prune seçeneğini find ile birlikte kullanın, örneğin find . -path "./exclude_dir" -prune -o -type f -name "*.txt" -print.
  7. Dosyaları boyutlarına göre aramak mümkün mü?
  8. Evet, find'i kullanın. -100 MB'tan büyük dosyaları bulmak için f -size +100M yazın.
  9. Normal bir ifadeyle eşleşen adlara sahip dosyaları nasıl arayabilirim?
  10. bul komutunu kullanın. -normal ifadeyle eşleşen adlara sahip dosyaları aramak için f -regex ".*pattern.*" yazın.
  11. Birden fazla arama kriterini birleştirebilir miyim?
  12. Evet, bul seçeneklerini kullanarak kriterleri birleştirebilirsiniz; örneğin bul . -f yazın -ad "*.txt" -boyut +10M.
  13. Gizli dosyaları yinelemeli olarak nasıl arayabilirim?
  14. bul komutunu kullanın. -gizli dosyaları aramak için f -name ".*" yazın.
  15. Yalnızca dizinleri listelemenin bir yolu var mı?
  16. Evet, find'i kullanın. -tüm dizinleri yinelemeli olarak listelemek için d yazın.
  17. Bulunan dosya sayısını nasıl sayabilirim?
  18. | Ekle wc -l find komutuna, örneğin find . -type f -name "*.txt" | wc -l.
  19. Aramanın derinliğini sınırlayabilir miyim?
  20. Evet, -maxlength seçeneğini kullanın, örneğin find . -maxlength 2 -type f aramayı 2 seviye derinlikle sınırlamak için.

Özyinelemeli Dosya Arama için Gelişmiş Teknikler

Daha önce tartışılan temel yinelemeli dosya arama yöntemlerine ek olarak, Linux'ta dosya arama yeteneklerinizi geliştirebilecek çeşitli gelişmiş teknikler vardır. Böyle bir yöntem, aşağıdakilerin kullanılmasını içerir: ile birlikte komut Belirli metin kalıplarını içeren dosyaları aramak için. Örneğin, kullanabilirsiniz "arama_metni" dizesini içeren tüm metin dosyalarını bulmak için. Bu, özellikle büyük kod tabanlarında veya günlük dosyalarında verimli bir şekilde arama yapması gereken geliştiriciler ve sistem yöneticileri için kullanışlıdır.

Özyinelemeli dosya aramaları için bir diğer güçlü araç ise basit, hızlı ve kullanıcı dostu bir alternatif . mantıklı varsayılanlarla birlikte gelir ve sezgisel bir sözdizimi sağlar. Örneğin, komut fd "pattern" desenle eşleşen dosyaları yinelemeli olarak arayacaktır ve varsayılan olarak normal ifadeleri destekler. Bunlara ek olarak, daha hızlıdır paralelleştirilmiş dosya sistemi geçişi nedeniyle birçok senaryoda. Kullanıcı dostu bir arayüz ile gelişmiş arama özelliklerine ihtiyaç duyan kullanıcılar için, mükemmel bir seçim olabilir.

Özyinelemeli Dosya Arama Hakkında Son Düşünceler

Linux'ta özyinelemeli dosya arama konusunda uzmanlaşmak, özellikle karmaşık dizin yapılarında verimli dosya yönetimi için çok önemlidir. Gibi araçlardan yararlanarak , ve bunun gibi alternatifler , kullanıcılar üretkenliklerini önemli ölçüde artırabilir. Bu komutları anlamak ve kullanmak, hem acemi hem de deneyimli kullanıcılar için zamandan tasarruf sağlayabilir ve görevleri basitleştirebilir, böylece dosyaların yerinin belirlenmesinin basit bir süreç haline gelmesini sağlar.