Linux dizinindeki dosyaları yinelemeli olarak sayma


728

Linux dizinindeki dosyaları yinelemeli olarak nasıl sayabilirim?

Bunu buldum:

find DIR_NAME -type f ¦ wc -l

Ama bunu çalıştırdığımda aşağıdaki hatayı döndürür.

find: yollar ifadeden önce gelmelidir: ¦


64
Kırık çubuğu ¦(ASCII 166), UNIX boru hattı| için kullanılan dikey çubukla (ASCII 124) karıştırıyorsunuz .
Skippy le Grand Gourou

7
@SkippyleGrandGourou Buna pipo denmiyor mu?
DaveStephens

27
@DaveStephens Evet, buna da denir. Buna bir Sheffer inme, verti-bar, vbar, çubuk, dikey çizgi, dikey eğik çizgi, çubuk, dikilitaş, glidus denir.
emlai

64
@zenith Ben sadece Bob diyorum.
Christopher

15
RFC20'de buna "dikey çizgi" denir. "Boru", sembolün adı yerine kabuk operatörünün adıdır. Tıpkı *"yıldız" ASCII karakteri gibi, ancak diğer bağlamlarda "kez".
ince

Yanıtlar:


1326

Bu çalışmalı:

find DIR_NAME -type f | wc -l

Açıklama:

  • -type f yalnızca dosyaları dahil etmek için.
  • |( ve değil¦ ) findkomutun standart çıktısını wckomutun standart girdisine yönlendirir.
  • wc(kelime sayımı kısaltması) girdisindeki satır, kelime ve baytları sayar ( dokümanlar ).
  • -l sadece yeni satırları saymak için.

Notlar:

  • Geçerli klasördeki komutu yürütmek için DIR_NAMEile değiştirin ..
  • Ayrıca -type fsayıya dahil edilecek dizinleri (ve sembolik bağlantıları) kaldırabilirsiniz .
  • Dosya adları yeni satır karakterleri içeriyorsa bu komutun üzerine çıkması mümkündür.

Örneğinizin neden çalışmadığının açıklaması:

Gösterdiğiniz komutta, |iki komutu bağlamak için "Boru" ( ) kullanmazsınız, ancak ¦kabuğun komut veya benzeri bir şey olarak tanımadığı kırık çubuk ( ) kullanılır. Bu yüzden bu hata mesajını alıyorsunuz.


27
fİçinde -type fdosyaları için ve standları wc -lkelime sayısı hatları için.
Serge Stroobandt

3
-type f
Sayıları

3
-printBayrağa gerek yok
Zoltán

3
Dosya adlarının -print0bayrak karakterini kullanmak isteyebileceği yeni satır karakteri içermesi olasılığı varsa .
gaboroncancio

2
@gaboroncancio Bazı uygulamalarında wcboş bir sonlandırılmış liste okuma seçeneği yoksa bu yardımcı olmaz . Bir alternatif için cevabımı görün.
Monica lütfen eski haline

100

Geçerli dizin için:

find -type f | wc -l

5
Bu çözüm, yeni satırlar içeren dosya adını dikkate almaz.
Kusalananda

2
Mevcut dizin için.
baptx

1
Aslında, bazı platformlarda, sen mi telaffuz etmek gerekfind .
tripleee

1
@Kusalanandra Yorumunuz buradaki hemen hemen her cevap için geçerlidir.
üçlü

69

Geçerli dizinin altındaki her bir dizinde kaç dosya bulunduğunu görmek istiyorsanız:

for i in */ .*/ ; do 
    echo -n $i": " ; 
    (find "$i" -type f | wc -l) ; 
done

Tabii ki bu tek bir çizgide olabilir. Parantez, çıktının kimin wc -lizlemesi gerektiğini netleştirir ( find $i -type fbu durumda).


7
İsimlerinde boşluk bulunan dizinlere yapışabilir. find . -maxdepth 1 -type d -print0 | while IFS= read -r -d '' i ; doDüzeltmek için ilk satırı değiştirme . Bkz. Bir dosyayı (veri akışı, değişken) satır satır (ve / veya tarla bazında) nasıl okuyabilirim?
Arch Stanton

4
findDış döngü için kullanmak sadece gereksiz bir komplikasyondur. for i in */; do`
tripleee

işlev countit {i için $ cinsinden (find. -maxdepth 1 -type d); do file_count = $ ($ i -tipi f | wc -l'yi bul); echo "$ file_count: $ i"; tamamlandı}; countit | sort -n -r
Schneems

Sonunda ihtiyacım olan buydu. Klasörlerimin binlerce dosyası var, bu yüzden onları ağaç veya başka bir şeyle yazdırmak bir seçenek değil
lesolorzanov

Buna ../ dahildir ve ileri gitmemektedir - yani gerici değildir.
Daniel Lefebvre

50

Kullanabilirsiniz

$ tree

ağaç paketini kurduktan sonra

$ sudo apt-get install tree

(Debian / Mint / Ubuntu Linux makinesinde).

Komut yalnızca dosya sayısını değil, aynı zamanda dizin sayısını da ayrı ayrı gösterir. -L seçeneği, maksimum görüntüleme düzeyini belirtmek için kullanılabilir (varsayılan olarak dizin ağacının maksimum derinliğidir).

Gizli dosyalar da -aseçenek sağlayarak dahil edilebilir .


4
Bu aslında dizin ve dosya sayısını görmenin en basit yoludur.
Lorem Ipsum Dolor

11
Man sayfasından: Varsayılan olarak ağaç gizli dosyaları yazdırmaz . Bunları -adahil etme seçeneğini sağlamanız gerekir.
eee

3
Bunu macOS'a yüklemek için, brewçalıştırdıktan brew install treesonra tercih edilir brew update.
Ashish Ahuja

4
Ayrıca tüm dosya adlarını yazdırır, bu nedenle çok sayıda dosyanız varsa yavaş olacaktır.
Franck Dernoncourt

2
Vay canına, çok güzel bir araç, renkli klasörleri yazdırabilir, sadece klasörleri listeleyebilir, JSON olarak çıktı alabilir. 34k klasörleri ve 51k dosyalarını çok birkaç saniye içinde listeleyebilir. Oley!
brasofilo

46

Bilgisayarımda, kabul edilen cevaptan rsyncbiraz daha hızlı find | wc -l:

$ rsync --stats --dry-run -ax /path/to/dir /tmp

Number of files: 173076
Number of files transferred: 150481
Total file size: 8414946241 bytes
Total transferred file size: 8414932602 bytes

İkinci satır, yukarıdaki örnekte 150.481 dosya sayısına sahiptir. Bonus olarak toplam boyutu da alırsınız (bayt cinsinden).

Uyarılar:

  • ilk satır, bir dizi dosya, dizin, sembol bağlantısı vb., bu yüzden ikinci satırdan daha büyüktür.
  • --dry-run(ya da-n kısaca) seçeneğinin gerçekten dosya aktarımı değil önemlidir!
  • -x"Dosya sistemi sınırlarını geçme" seçeneğini kullandım , yani onu yürütürseniz /ve harici sabit diskleriniz varsa, yalnızca kök bölümdeki dosyaları sayar.

Burada rsync kullanma fikrinizi seviyorum. Bunu hiç düşünmemiştim!
Qeole

Teşekkürler @Qeole, fikir olsa benim değil. Birkaç yıl önce bir yerde rsync'in çok sayıda dosya ve alt klasör içeren bir klasörü silmek için en hızlı olduğu bir yerde okudum, bu yüzden dosyaları da saymanın hızlı olabileceğini düşündüm.
psmith

1
Bunu denedim. Önbellek doldurmak için önceden iki kez çalıştırdıktan sonra find ~ -type f | wc -l1.7 / 0.5 / 1.33 saniye (gerçek / kullanıcı / sys) aldı. rsync --stats --dry-run -ax ~ /xxx4.4 / 3.1 / 2.1 saniye sürdü. Bu SSD'deki yaklaşık 500.000 dosya için.
ince

Hangi rsync sürümünü kullandığınızı Number of files: 487 (reg: 295, dir: 192)
bilmeyin

rsync version 2.6.9 protocol version 29
MacOS'ta

20

UNIX'teki dosya adları yeni satırlar içerebileceğinden (evet, yeni satırlar) wc -lçok fazla dosya sayabilir. Her dosya için bir nokta yazdırır ve ardından noktaları sayarım:

find DIR_NAME -type f -printf "." | wc -c

1
Görünüşe göre adlarında yeni satır içeren dosyaları işleyen tek çözüm bu. Upvoted.
codeforester

2
hihi :) Dosya adlarında yeni satırları seviyorum. Bu onları daha okunaklı yapar.
hek2mgl

Demek istediğim, dosya adlarındaki yeni satırlar içeriği değil!
codeforester

1
Sadece şaka yapıyordum ... Evet, dosya adlarındaki yeni satırların her zaman dikkate alınması gerekiyor. Kötü amaçlı içerikten veya daha az gösterişli bir yazım hatasıyla gelebilirler.
hek2mgl

18

Buradaki cevapların birçoğunu bir araya getirerek, en yararlı çözüm şöyle görünüyor:

find . -maxdepth 1 -type d -print0 |
xargs -0 -I {} sh -c 'echo -e $(find "{}" -printf "\n" | wc -l) "{}"' |
sort -n

Boşluk parantezi ve hatta yeni satırlar içeren dosya adları gibi garip şeyleri işleyebilir. Ayrıca çıktıyı dosya sayısına göre sıralar.

-maxdepthAlt dizinlerin de sayılmasını sağlamak için sonraki sayıyı artırabilirsiniz . Özellikle çok sayıda iç içe geçmiş dizin yapınız varsa, bunun uzun sürebileceğini unutmayın -maxdepth.


Nedir echo -e? Sanırım herhangi bir yeni satırı katlamak için koydunuz, ancak diğer düzensiz boşlukları da değiştirecek ve dosya adlarında kelimesi kelimesine mevcut olan joker karakterleri genişletmeye çalışacaksınız. Ben sadece gibi bir şey ile gitmek find .* * -type d -execdir sh -c 'find . -type f -printf "\n" | wc -l; pwd've çıkış herhangi bir sapma ile yaşamak, ya da belki printf "%q"dizin adını yazdırmak için Bash's ile oynamak .
üçlü

10

Mevcut çalışma dizininde kaç dosya ve alt dizin bulunduğunu bilmek istiyorsanız, bu tek astarı kullanabilirsiniz

find . -maxdepth 1 -type d -print0 | xargs -0 -I {} sh -c 'echo -e $(find {} | wc -l) {}' | sort -n

Bu GNU lezzetinde çalışır ve sadece -e'yi BSD linux (örn. OSX) için echo komutundan çıkarır.


2
Mükemmel çözüm! Bulduğum tek sorun, boşluk veya özel karakter içeren dizinlerdi. Dizin adının kullanıldığı alıntıları ekleyin:find . -maxdepth 1 -type d -print0 | xargs -0 -I {} sh -c 'echo -e $(find "{}" | wc -l) "{}"' | sort -n
John Kary

1
Biraz değiştirdim ve benim için oldukça iyi çalışıyor:find . -maxdepth 1 -type d -print0 | xargs -0 -I {} sh -c 'echo $(find {} | wc -l) \\t {}' | sort -rn | less
Wizek

@ Sebastian'ın cevabı hakkındaki yorumlarım burada da geçerlidir. Kullanımı echo -ebir tırnaksız dizin adına (önceki yorumunda olarak ya da sadece `echo`) diğeri için bir problem esnaf.
üçlü

8

Hata durumlarından kaçınmak istiyorsanız, izin vermeyin wc -l , yeni satır içeren dosyaları görmenize (2+ dosya olarak sayılır)

Örneğin, içinde tek bir EOL karakteri bulunan tek bir dosyamız olduğu bir durumu düşünün

> mkdir emptydir && cd emptydir
> touch $'file with EOL(\n) character in it'
> find -type f
./file with EOL(?) character in it
> find -type f | wc -l
2

En azından gnu wc, boş bir sonlandırılmış listeyi okuma / sayma seçeneğine sahip olmadığından (bir dosya hariç) görünmediğinden, en kolay çözüm sadece dosya adlarını iletmek değil, her dosya bulunduğunda statik bir çıktıdır, örn. yukarıdaki ile aynı dizinde

> find -type f -exec printf '\n' \; | wc -l
1

Veya eğer finddestekliyorsa

> find -type f -printf '\n' | wc -l
1 

7

Komutu kullanabilirsiniz ncdu. Bir Linux dizininin kaç dosya içerdiğini yinelemeli olarak sayacaktır. İşte çıktı örneği:

resim açıklamasını buraya girin

Çok sayıda dosyanız varsa kullanışlı olan bir ilerleme çubuğu vardır:

resim açıklamasını buraya girin

Ubuntu'ya kurmak için:

sudo apt-get install -y ncdu

Benchmark: Dosya sayısını saymak zorunda olduğunuz klasör olarak https://archive.org/details/cv_corpus_v1.tar (380390 dosya, 11 GB) kullandım.

  • find . -type f | wc -l: tamamlamak için yaklaşık 1m20s
  • ncdu: tamamlamak için yaklaşık 1m20s

Bu esas olarak dosya sayısını değil, disk kullanımını hesaplar. Bu ek yük muhtemelen istenmez. (standart POSIX yardımcı programlarıyla yapılabilecek bir şey için ek bir paket kurma ihtiyacının yanı sıra)
hek2mgl

@ hek2mgl İlk ekran görüntüsünde kırmızı renkte gösterildiği gibi dosya sayısını hesaplar. ~ 2 milyon dosya için birkaç dakika sürdü, bu yüzden hız çok kötü değil.
Franck Dernoncourt

2
@ hek2mgl ben iki defa denedik ve ben arasında herhangi bir fark göremedim, yanıtında bir tekrarlanabilir kriter eklendi find . -type f | wc -lve ncdu.
Franck Dernoncourt

2
Evet, görünüşe göre arka findsistemle aynı sistem çağrılarını aşağı yukarı yürütüyor . Sadece onları takip ettim. duncdu
hek2mgl

1
@FranckDernoncourt onu sevdi. Bir klasörde tonlarca dosyam var ve ilerleme çubuğuna sahip olmak hayat kurtarıcı. Paylaşım için teşekkürler!
Geek


4

Geçerli dizinde kaç dosya olduğunu belirlemek için girin ls -1 | wc -l. Bu , çıktıdaki wcsatır sayısını saymak için kullanır . Nokta dosyaları sayılmaz. Lütfen bunu not al(-l)ls -1ls -l Aslında sana gerçek sayısından daha bir dosya sayısı bir fazla verecektir bu NASIL önceki sürümlerinde kullanılan ( "L" yerine önceki örneklerde olduğu gibi bir "1" olduğunu). Bu nokta için Kam Nejad'a teşekkürler.

Yalnızca dosyaları saymak ve sembolik bağlantılar İÇERMEMEK istiyorsanız (yalnızca başka ne yapabileceğinize bir örnek), kullanabilirsiniz ls -l | grep -v ^l | wc -l(bu sefer "1" değil "L", burada "uzun" bir liste istiyoruz) . grep"l" ile başlayan (bağlantıyı gösteren) herhangi bir satırı kontrol eder ve o satırı (-v) atar.

Göreceli hız: "ls -1 / usr / bin / | wc -l" yüksüz 486SX25'te yaklaşık 1.03 saniye sürer (bu makinede / usr / bin / 355 dosyaya sahiptir). " ls -l /usr/bin/ | grep -v ^l | wc -l" yaklaşık 1,19 saniye sürer.

Kaynak: http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/x700.html


2
ls -lstatboyutu, mtime ve diğer özellikleri yavaş okumak için her dosyada syscall yapmak gerekir . Büyük dizinlerde (100.000+ dosya) çalıştırmak ls -lbirkaç dakika sürebilir. Sadece dosyaları saymak için daima kullanın ls -1 | wc -l.
Marki555

A 486SX25, güzel
cam8001 5:17

ls -1dosyaları sıralamak zorunda olduğu için büyük dizinlerde hala yavaş olabilir. Sadece printf '%s\n' *aynı şeyi yapar ve harici lsaramayı (yine de sorunlu ) önler, ancak en etkili çözüm, herhangi bir sıralama yapmayan bir komut kullanmaktır find. (
Glob

4

İhtiyacınız olan şey belirli bir dosya türünü tekrar tekrar saymaksa , şunları yapabilirsiniz:

find YOUR_PATH -name '*.html' -type f | wc -l 

-l yalnızca çıktıdaki satır sayısını görüntülemektir.


Uzantı dosya
adının bir

4

Bash ile:

() İle bir dizi giriş oluşturun ve # ile sayıyı alın.

FILES=(./*); echo ${#FILES[@]}

Tamam bu özyinelemeli dosyaları saymaz ama önce basit seçeneği göstermek istedim. Yaygın bir kullanım durumu, bir dosyanın rollover yedeklemelerini oluşturmak olabilir. Bu logfile.1, logfile.2, logfile.3 vb.

CNT=(./logfile*); mv logfile logfile.${#CNT[@]}

Bash 4+ globstaretkinken yinelenen sayım (@tripleee tarafından belirtildiği gibi)

FILES=(**/*); echo ${#FILES[@]}

Dosya sayısını yinelemeli olarak elde etmek için bulmayı aynı şekilde kullanabiliriz.

FILES=(`find . -type f`); echo ${#FILES[@]}

Modern mermiler **/*yinelemeli numaralandırmayı destekler . findKabuğun her dizindeki dosyaları sıralaması gerektiğinden, büyük dizinlerden daha az verimlidir .
üçlü

2

Adında boşluk bulunan dizinler için ... (yukarıdaki çeşitli yanıtlara dayanarak) - dizin adını, içindeki dosya sayısı ile tekrar tekrar yazdırın:

find . -mindepth 1 -type d -print0 | while IFS= read -r -d '' i ; do echo -n $i": " ; ls -p "$i" | grep -v / | wc -l ; done

Örnek (okunabilirlik için biçimlendirilmiş):

pwd
  /mnt/Vancouver/Programming/scripts/claws/corpus

ls -l
  total 8
  drwxr-xr-x 2 victoria victoria 4096 Mar 28 15:02 'Catabolism - Autophagy; Phagosomes; Mitophagy'
  drwxr-xr-x 3 victoria victoria 4096 Mar 29 16:04 'Catabolism - Lysosomes'

ls 'Catabolism - Autophagy; Phagosomes; Mitophagy'/ | wc -l
  138

## 2 dir (one with 28 files; other with 1 file):
ls 'Catabolism - Lysosomes'/ | wc -l
  29

Dizin yapısı aşağıdakiler kullanılarak daha iyi görselleştirilir tree:

tree -L 3 -F .
  .
  ├── Catabolism - Autophagy; Phagosomes; Mitophagy/
  │   ├── 1
  │   ├── 10
  │   ├── [ ... SNIP! (138 files, total) ... ]
  │   ├── 98
  │   └── 99
  └── Catabolism - Lysosomes/
      ├── 1
      ├── 10
      ├── [ ... SNIP! (28 files, total) ... ]
      ├── 8
      ├── 9
      └── aaa/
          └── bbb

  3 directories, 167 files

man find | grep mindep
  -mindepth levels
    Do not apply any tests or actions at levels less than levels
    (a non-negative integer).  -mindepth 1 means process all files
    except the starting-points.

ls -p | grep -v /(aşağıda kullanılır) /unix/48492/list-only-regular-files-but-not-directories-in-current-directory adresindeki yanıt 2'den alınmıştır.

find . -mindepth 1 -type d -print0 | while IFS= read -r -d '' i ; do echo -n $i": " ; ls -p "$i" | grep -v / | wc -l ; done
./Catabolism - Autophagy; Phagosomes; Mitophagy: 138
./Catabolism - Lysosomes: 28
./Catabolism - Lysosomes/aaa: 1

Applcation: Birkaç yüz dizin arasında maksimum dosya sayısını bulmak istiyorum (tüm derinlik = 1) [aşağıda tekrar çıktı için biçimlendirilmiş çıktı]:

date; pwd
    Fri Mar 29 20:08:08 PDT 2019
    /home/victoria/Mail/2_RESEARCH - NEWS

time find . -mindepth 1 -type d -print0 | while IFS= read -r -d '' i ; do echo -n $i": " ; ls -p "$i" | grep -v / | wc -l ; done > ../../aaa
    0:00.03

[victoria@victoria 2_RESEARCH - NEWS]$ head -n5 ../../aaa
    ./RNA - Exosomes: 26
    ./Cellular Signaling - Receptors: 213
    ./Catabolism - Autophagy; Phagosomes; Mitophagy: 138
    ./Stress - Physiological, Cellular - General: 261
    ./Ancient DNA; Ancient Protein: 34

[victoria@victoria 2_RESEARCH - NEWS]$ sed -r 's/(^.*): ([0-9]{1,8}$)/\2: \1/g' ../../aaa | sort -V | (head; echo ''; tail)

    0: ./Genomics - Gene Drive
    1: ./Causality; Causal Relationships
    1: ./Cloning
    1: ./GenMAPP 2
    1: ./Pathway Interaction Database
    1: ./Wasps
    2: ./Cellular Signaling - Ras-MAPK Pathway
    2: ./Cell Death - Ferroptosis
    2: ./Diet - Apples
    2: ./Environment - Waste Management

    988: ./Genomics - PPM (Personalized & Precision Medicine)
    1113: ./Microbes - Pathogens, Parasites
    1418: ./Health - Female
    1420: ./Immunity, Inflammation - General
    1522: ./Science, Research - Miscellaneous
    1797: ./Genomics
    1910: ./Neuroscience, Neurobiology
    2740: ./Genomics - Functional
    3943: ./Cancer
    4375: ./Health - Disease 

sort -Vdoğal bir çeşittir. ... Yani, (Claws Mail) dizinlerinden herhangi birindeki maksimum dosya sayısı 4375 dosya. Bu dosya adlarını bıraktığımda ( https://stackoverflow.com/a/55409116/1904943 ) bu dosya adları - hepsi sayısal olarak adlandırılır, her dizinde 1 ile başlayarak - ve toplam 5 basamağa kadar doldurulur, tamam olmalıyım .


ek

Bir dizindeki toplam dosya sayısını, alt dizinleri bulun.

$ date; pwd
Tue 14 May 2019 04:08:31 PM PDT
/home/victoria/Mail/2_RESEARCH - NEWS

$ ls | head; echo; ls | tail
Acoustics
Ageing
Ageing - Calorie (Dietary) Restriction
Ageing - Senescence
Agriculture, Aquaculture, Fisheries
Ancient DNA; Ancient Protein
Anthropology, Archaeology
Ants
Archaeology
ARO-Relevant Literature, News

Transcriptome - CAGE
Transcriptome - FISSEQ
Transcriptome - RNA-seq
Translational Science, Medicine
Transposons
USACEHR-Relevant Literature
Vaccines
Vision, Eyes, Sight
Wasps
Women in Science, Medicine

$ find . -type f | wc -l
70214    ## files

$ find . -type d | wc -l
417      ## subdirectories

1

Ben yazdım ffcntBelirli durumlarda özyinelemeli dosya sayımını hızlandırmak için : döndürme diskleri ve kapsam eşlemesini destekleyen dosya sistemleri.

Bu, daha büyük lsya da findtemelli yaklaşımların büyüklüğünün bir sırası olabilir , ancak YMMV.


0

Burada birçok doğru cevap var. İşte başka bir tane!

find . -type f | sort | uniq -w 10 -c

nereye .bakılacağı klasör 10ve dizinin gruplandırılacağı karakter sayısıdır.


-1

find -type f | wc -l

VEYA (Dizin geçerli dizinse)

bulmak. tipi f | wc -l


Bu aynı soruya en az bir cevap daha çoğaltır.
Kusalananda

-1

Bu tamamen iyi çalışacaktır. Basit kısa. Bir klasörde bulunan dosya sayısını saymak istiyorsanız.

ls | wc -l

3
Her şeyden önce, bu soruya cevap vermiyor. Soru, bir dizindeki dosyaları özyinelemeli olarak saymakla ilgilidir ve gösterdiğiniz komut bunu yapmaz. dahası, ls ile dizinlerin yanı sıra dosyaları sayıyorsunuz. Ayrıca, yeni bir şey eklemeyecekseniz ve soruyu düzgün bir şekilde okuyamayacaksanız, eski bir soruyu cevaplamak için hiçbir neden yoktur. Lütfen bunu yapmaktan kaçının.
XFCC

-1

Biçim filtrelemeli bu alternatif yaklaşım, mevcut tüm grup çekirdek modüllerini sayar:

ls -l /boot/grub/*.mod | wc -l

-3
ls -l | grep -e -x -e -dr | wc -l 
  1. uzun liste
  2. dosyaları ve dizinleri filtrele
  3. filtrelenmiş satırı say
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.