Geçerli çalışma dizinini çekecek, her dosyayı tarayacak ve bir .txt dosyası olup olmadığını kontrol edecek bir komut dosyası yazmaya çalışıyorum. Sonra her dosyayı (bu bir metin dosyası) alın ve isminin herhangi bir yerinde bir alt çizgi içerip içermediğini ve alt çizgiyi bir tireye çevirip değiştirmeyeceğini kontrol edin.Bir UNIX dizinindeki dosyaları yeniden adlandırma - kabuk betikleme
#!/bin/bash
count=1
while((count <= $#))
do
case $count in
"*.txt") sed 's/_/-' $count
esac
((count++))
done
Ne düşünüyordum bu argümanlar olarak geçerli çalışma dizinindeki dosyaları alacağını geçerli:
Bu uzun bir sipariş, ama burada ben bugüne kadar kaba kod olduğunu biliyoruz ve her dosyayı ($ count veya "count" deki dosya ile gösterilir) kontrol edin. Sonra her dosya için, .txt ile bittiğini kontrol ederdi ve eğer yaparsa, her alt çizgi, sed kullanarak bir tireye değiştirirdi. Sahip olduğum başlıca problemlerden biri, komut dosyasının mevcut çalışma dizinindeki dosyaları okumamasıdır. Komutu komut dosyasını çalıştırdıktan sonra dizine dahil etmeye çalıştım, ancak her dosya yerine her satırın aldığını düşünüyorum (her satırda 4 veya daha fazla dosya olduğu için).
Neyse, herhangi bir yardım büyük takdir edilecektir! Ayrıca, kodumun çok kötü olduğu için üzgünüm, UNIX için çok yeni.
Bir problem, '$ count'' sayısının değişkeni, yani tamsayıdır. Konumsal parametreler üzerinde yineleme yapmak isterseniz, şunu yazabilirsiniz: "$ @" içindeki dosya için; dosya için '' ya da kısa '' yapmak; –
burada yapın: http: //theunixshell.blogspot.com/2013/01/bulk-renaming-of-files-in-unix.html – Vijay