Bunu dene:
$ find TopFolder -print
Topfolder
Topfolder/Folder1
Topfolder/Folder1/Folder11.ext
Topfolder/Folder1/Folder11.ext/Folder111
Topfolder/Folder2.ext
$ find TopFolder -name '*.ext' -print | while read i; do mv -v "$i" "${i%.ext}";done
$ find TopFolder
TopFolder
TopFolder/Folder1
TopFolder/Folder1/Folder11
TopFolder/Folder1/Folder11/Folder111
TopFolder/Folder2
İlk ve son buluntu sadece hiyerarşiden önce ve sonra göstermektir. İşte asıl işi yapan ortancanın nasıl çalıştığını şöyle gösterir:
$ find TopFolder -name '*.ext' -print
Bu, TopFolder'daki deseni eşleştiren her şeyi bulur '*.ext'
, .ext ile biten tüm dosya ve dizinler budur ve her birinin yolunu yazdırır. Yalnızca dizinlerle sınırlandırmak istiyorsanız, -type d
.
while read i; do
read i
standart girdiden kabuk değişkenine okur i
. while
kadar döngüler read i
dosyanın sonunda yaptığı false değerini döndürür. Olmak find
'nın çıkışı, read
'nin standart girişi; find
, yani read
bir anda bir satır okuyacak find
hiç kalmamış olana kadar çıktı.
mv -v "$i" "${i%.ext}"
Bu asıl adı değiştirir. -v
içeride sadece ne olduğunu görebilirsin, istersen dışarıda bırakabilirsin. "$i"
içindeki yolun herhangi bir öğesi durumunda alıntı yapılan kaynaktır. $i
boşluk içerir. "${i%.ext}"
Hedef $i
herhangi bir iz .ext
çıkarıldı.
done
Bu sadece while döngüsünü sonlandırır.
Bunun bash olduğunu, diğer oldukça modern kabuklarda yapılabilir olması gerektiğini unutmayın, ancak sözdizimi biraz farklı olabilir.