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 $iherhangi 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.