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:
:!
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.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.|
- 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.
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:
grep
Daha önceki açıklamada olduğu gibi,grep
komutu belirtilen metni dosyalar içinde arar.-r
Dizin ve alt dizinlerdeki dosyaları tarar.-l
Metni içeren dosyaların yalnızca isimlerini döndürür."#bash"
Aranacak metni belirtir. Burada, dosyalarda#bash
etiketi aranır..
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:
grep -rl "#bash" .
Yukarıda açıkladığımız gibi, bu komut#bash
etiketi içeren dosyaları listeler.|
Boru operatörü,grep
komutunun çıktısınıxargs
komutuna aktarır.xargs -I {}
grep
komutundan gelen dosya isimlerini tek tek işlemek için kullanılır.mv {}
Her bir dosya,mv
komutu ile hedef klasöre taşınır.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.