Taşınan/kopyalanan 2./3. aynı isimdeki dosyanın ismine sıralı rakam eklemek

Başlatan ihtiyar said, 09 Nisan 2009 - 18:40:44

« önceki - sonraki »

0 Üyeler ve 3 Ziyaretçi konuyu incelemekte.

ihtiyar said

cp/mv komutları ile dosya kopyalama/taşıma yapıyorum. Sorunum şu ki, bu komutlarla kopyalama/taşıma yaparken ikinci ve aynı isimde ikinci dosya varsa kopyalama/taşıma yapmıyor. Ben istiyorum ki, kopyalama/taşıma yapsın ama isminin sonuna 1/2/3 diye sırayla eklensin. Yani aynı isimde üçüncü dosya kopyalanıyorsa/taşınıyorsa sonuna 3 gelsin. Bu böyle devam etsin. :)

Bunun bir yolunu buldum, backup komutu ile oluyor bu. Nasıl? Yeni gelen dosyaların sonuna ~ (tilda) ekliyor. Yani, aaa~1~/aaa~2~ oluyor. Bu dosyalar gizli oluyor. Çünkü backup dosyaları. :)

İkinci bir yöntem, suffix komutu ile oldu. İlk dosyayı aynen kopyalıyor, ikincisinin sonuna istediğim şeyi ekliyor -sayı/kelime-. Ama üçüncüsünü kopyalamıyor.

Sıralı olarak rakam eklettirmek mümkün mü?

heartsmagic

Mümkün ama bir şekilde koda bürünmek lazım. Örneğin bash ile bu iş yapılacaksa önce kopyalanacak dizinde bizim dosya var mı diye kontrol ettirilir, eğer varsa sonuna 1 konulur. Eğer aynısı varsa, 1 varsa bu sefer 2 olur. Tabii bu biraz hamal işi oluyor.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

ihtiyar said

Alıntı yapılan: heartsmagic - 10 Nisan 2009 - 01:47:38
Mümkün ama bir şekilde koda bürünmek lazım. Örneğin bash ile bu iş yapılacaksa önce kopyalanacak dizinde bizim dosya var mı diye kontrol ettirilir, eğer varsa sonuna 1 konulur. Eğer aynısı varsa, 1 varsa bu sefer 2 olur. Tabii bu biraz hamal işi oluyor.

Tamam, ben buna razıyım ama nasıl yapacağım? Zaten betiğin içine ekleyeceğim. Ama bu devam etmesi gerekiyor yani 2 var ise 3 olacak gibi... Mümkün mü? Mümkün ise nasıl?

heartsmagic

Şimdi, düz gidersek cidden hamallık olur. Örnek kendisini kontrol et varsa 1 yap. Kendisi ve 1 varsa 2 yap. Kendisi,1,.....,100 varsa 101 yap. .......

Tersten gidebilir miyiz acaba? Kendisi yoksa kopyala. Kendisi varsa 1'i kontrol et eğer yoksa 1 yap. Bu arada bir kontrol elemanı tanımlanır birer birer arttırılır. Yukarıdan farkı burada nereye kadar gidileceği belli: Olmayan dosyaya kadar. Yukarıda ise gidilecek sayı belli değil ve bize bağlı.

Not: Kafam dağınık olabilir, algoritmayı kontrol etmek lazım :)
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

ihtiyar said

Alıntı yapılan: heartsmagic - 10 Nisan 2009 - 02:26:52
Şimdi, düz gidersek cidden hamallık olur. Örnek kendisini kontrol et varsa 1 yap. Kendisi ve 1 varsa 2 yap. Kendisi,1,.....,100 varsa 101 yap. .......

Tersten gidebilir miyiz acaba? Kendisi yoksa kopyala. Kendisi varsa 1'i kontrol et eğer yoksa 1 yap. Bu arada bir kontrol elemanı tanımlanır birer birer arttırılır. Yukarıdan farkı burada nereye kadar gidileceği belli: Olmayan dosyaya kadar. Yukarıda ise gidilecek sayı belli değil ve bize bağlı.

Not: Kafam dağınık olabilir, algoritmayı kontrol etmek lazım :)

Hadi bunu düşündüm diyelim, koda nasıl dönüştüreceğim? :)

Bir şey bilmeden yola çıkınca oluyor böyle işte. :)

heartsmagic

Bash programlama :) Eğer öğrenmek için arıyorsan baştan bakmaya başlaman lazım. Yok acilse zaten ehil eller yazıp verirler bir tane, tabii zamanı olanlar :)

Bash ile dosya kontrolü mümkün. Bir de if-else, for kullanıldı mı sanırım yapılabilir.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

ihtiyar said

Alıntı yapılan: heartsmagic - 10 Nisan 2009 - 02:34:40
Bash programlama :) Eğer öğrenmek için arıyorsan baştan bakmaya başlaman lazım. Yok acilse zaten ehil eller yazıp verirler bir tane, tabii zamanı olanlar :)

Bash ile dosya kontrolü mümkün. Bir de if-else, for kullanıldı mı sanırım yapılabilir.

Küçük ve basit bir betik yazmak istedim, öğrenmek istediğimden değil. :) Onu da foruma ekleyecektim ama betiğin vurucu komutlarını araştırma ile yazamadım. :)

localhost

Linux LPIC1 - MCSA

heartsmagic

Eh ya biraz daha araştıracaksın ya da başka biri senin bu güzel düşünceni kapacak :)
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

ihtiyar said

Alıntı yapılan: heartsmagic - 10 Nisan 2009 - 02:42:12
Eh ya biraz daha araştıracaksın ya da başka biri senin bu güzel düşünceni kapacak :)

Canı sağ olsun, kim istiyorsa anlatayım. Hatta sunumu hazırladım bile, sadece betik kalmıştı. :) Ben sunumu gönderebilirim, kim istiyorsa. Amaç, belki birisine yardımı olur. ;)

localhost

Linux LPIC1 - MCSA


localhost

Komutlari yorumlayabilirsen eminim istedigin sonuca varirsin.

BASH ile mümkün olan herseyi yapabilirsin :)
Linux LPIC1 - MCSA

Malik

Hep merak etmişimdir. Tilda işareti klavyede nasıl konuluyor acaba. Ya da konulabiliyor mu?
Bir şey öğrenmek istediğimde dışarı çıkar ve benden daha çok bilen birisini bulur ona sorarım. Bazen çok kazık sorarım!!!

Linux bir felsefedir, felsefe öğretidir, öğreti bilim ve düşüncedir, bilim ve düşünce özgürlüktür, özgürlük ise linuxdur. Yani Linux herşeydir.

localhost

Linux LPIC1 - MCSA

ihtiyar said

Alıntı yapılan: Kirmizi - 10 Nisan 2009 - 02:55:23
Tilda isareti nedir ? Bumu ~~~~~~

Evet, budur. Bu sorunun cevabı da forumda mevcuttur. :) Şaka değil, gerçek. ;)

localhost

Linux LPIC1 - MCSA

Malik

Şaka gibi gerçekten varmış :) Olacağı hiç aklıma gelmedi yoksa arama yapmadan soru sormazdım :) Teşekkürler @ihtiyar said ve @kırmızı

türkçe klavyede  "altgr + ü"
Bir şey öğrenmek istediğimde dışarı çıkar ve benden daha çok bilen birisini bulur ona sorarım. Bazen çok kazık sorarım!!!

Linux bir felsefedir, felsefe öğretidir, öğreti bilim ve düşüncedir, bilim ve düşünce özgürlüktür, özgürlük ise linuxdur. Yani Linux herşeydir.

cxerpw57

Bu konu çözüldümü bilmiyorum ancak bende şöyle bir şey ekleyebilirim. Shell Scriptte sıkça kullanılan mktemp isimli bir komut bulunmaktadır. Bu komut sistem üzerinde tek isimli dosyalar oluşturmakta kullanılabilir. Yapmanız gereken aldığınız dosya adının sonuna mktemp komutu ile örneğin 6 karakterli bir string eklemek sonra taşımak. Bunun için aşağıda bir örnek verebilirim.

tempfile=`mktemp test19.XXXXXX`

burda tempfile bir dosya adını referans ediyor. XXXXXX ise mktemp komutu tarafından üretilen ve eklenen stringdir. Buda sistem üzerinde bir defa oluşturulan bir stringdir. X'lerin sayısını siz belirleyebilirsiniz.

Yapmanız gereken kopyalamak istediğiniz dosyaların isimlerini alıp aşağıdaki gibi,

tempfile = `mktemp aldigim_dosyanin_ismi.XXXXXX` şeklinde yeni bir dosya adı ile istediğiniz dizine taşımak olmalıdır.

Bu method özellikle otomatik backup alma işlemlerinde çok sıkça kullanılmaktadır. Takıldığınız bir yer olursa yardımcı olmaya çalışayım.

İyi çalışmalar.
Yarım hazırlıkla, yarım tedbirle yapılacak taarruz, hiç taarruz etmemekten çok daha fenadır (1922). M.Kemal ATATÜRK
http://canerblt.wordpress.com
twitter : cabulut

localhost

Bu isine yararmi bilmiyorum ama en azindan icindeki kodlardan faydalanabilirsin.

Renamer (Gnome-look)
Linux LPIC1 - MCSA