gokayburuc.dev

Aynı Hashtag’e Sahip Dosyaları Aynı Klasöre Taşıma

Bu makalede, belirli bir hashtag’e sahip dosyaları nasıl aynı klasöre taşıyacağınızı hem Neovim içinde hem de Bash komut satırı yöntemiyle ele alacağız. Her iki yöntemi de Türkçe olarak açıklayacağız ve kullanılan komutların satır satır analizini yapacağız.


1. Yöntem: Neovim İçinde Hashtag’e Göre Dosya Taşıma

Komut

:!grep -rl "#bash" . | xargs -I {} mv {} bash/

Açıklama:

Bu komut Neovim editörü içinde çalıştırılır ve aşağıdaki adımları içerir:

  1. :!
    Neovim içinde dış terminal komutlarını çalıştırmanızı sağlar. Bu, Neovim'den çıkmadan shell (terminal) komutları çalıştırmanıza olanak tanır.

  2. grep -rl "#bash" .

    • grep: Dosyaların içinde metin araması yapmak için kullanılan komuttur.
    • -r: Belirtilen dizin ve alt dizinlerdeki dosyaları da tarar.
    • -l: Sadece aranan metni içeren dosyaların isimlerini listeler.
    • "#bash": İçinde #bash etiketi bulunan dosyaları arar.
    • .: Geçerli dizini belirtir, yani bu komut geçerli dizin ve alt dizinlerde arama yapar.

    Bu aşamada, komut #bash etiketi içeren tüm dosya isimlerini döndürür.

  3. |

    • Pipe (boru) operatörü, bir komutun çıktısını başka bir komuta girdi olarak aktarır.
    • Burada grep komutunun ürettiği dosya isimleri, xargs komutuna aktarılır.
  4. xargs -I {} mv {} bash/

    • xargs: Liste halinde gelen çıktıları bir komutla işlemek için kullanılır.
    • -I {}: xargs'a, her bir öğeyi {} yerine yerleştirerek işlemesini söyler.
    • mv {}: mv komutu, dosya taşımak için kullanılır. Burada {} her bir dosya adı ile değiştirilir.
    • bash/: Taşınacak hedef klasördür.

Bu komut, #bash etiketi içeren dosyaları bash klasörüne taşır.


2. Yöntem: Bash ile Hashtag’e Göre Dosya Taşıma

1. Dosyaları Bulma

Komut:

grep -rl "#bash" .

Açıklama:

  1. grep
    Daha önceki açıklamada olduğu gibi, grep komutu belirtilen metni dosyalar içinde arar.

  2. -r
    Dizin ve alt dizinlerdeki dosyaları tarar.

  3. -l
    Metni içeren dosyaların yalnızca isimlerini döndürür.

  4. "#bash"
    Aranacak metni belirtir. Burada, dosyalarda #bash etiketi aranır.

  5. .
    Geçerli dizini belirtir. Bu, aramanın içinde bulunduğunuz klasör ve alt klasörlerde yapılacağını ifade eder.

Bu komutun sonucunda, içinde #bash etiketi bulunan tüm dosyaların isimlerini listeler.


2. Dosyaları Taşıma

Komut:

grep -rl "#bash" . | xargs -I {} mv {} bash/

Açıklama:

  1. grep -rl "#bash" .
    Yukarıda açıkladığımız gibi, bu komut #bash etiketi içeren dosyaları listeler.

  2. |
    Boru operatörü, grep komutunun çıktısını xargs komutuna aktarır.

  3. xargs -I {}
    grep komutundan gelen dosya isimlerini tek tek işlemek için kullanılır.

  4. mv {}
    Her bir dosya, mv komutu ile hedef klasöre taşınır.

  5. bash/
    Dosyaların taşınacağı klasördür. Bu klasörün önceden oluşturulmuş olması gerekir. Eğer klasör yoksa, aşağıdaki komutla oluşturabilirsiniz:

    mkdir bash
    

Örnek Uygulama

Dizin yapısı şu şekilde olsun:

.
├── file1.txt
├── file2.txt
├── file3.txt
├── subdir/
│   ├── file4.txt
│   └── file5.txt

Varsayalım ki file1.txt, file3.txt, ve subdir/file5.txt dosyalarında #bash etiketi bulunuyor. Yukarıdaki komutları çalıştırdıktan sonra dizin yapısı şu şekilde olur:

.
├── file2.txt
├── subdir/
│   └── file4.txt
├── bash/
│   ├── file1.txt
│   ├── file3.txt
│   └── file5.txt

Sonuç

Yukarıdaki yöntemler, dosyaları belirli bir hashtag’e göre hızlıca organize etmek için etkili bir yoldur. Eğer sık sık belirli anahtar kelimelere göre dosya düzenlemesi yapıyorsanız, bu komutlar iş akışınızı büyük ölçüde hızlandıracaktır. Neovim içinde çalıştırabileceğiniz gibi, doğrudan terminal üzerinden de kullanabilirsiniz.