การเปลี่ยนชื่อไดเร็กทอรีตามรูปแบบ

ขณะนี้ฉันกำลังพยายามเปลี่ยนชื่อไดเร็กทอรีทั้งหมดที่มี 123 เป็น 321.
ตัวอย่างเช่น หากฉันมีไดเร็กทอรีชื่อ test123test ฉันอยากจะเปลี่ยนชื่อเป็น test321test.

จนถึงตอนนี้ ฉันมีบางอย่างที่มีลักษณะดังนี้:
find . -depth -name *123* -exec mv {} นั่นคือสิ่งที่ฉันกำลังประสบปัญหา\;
เพราะฉันไม่' ไม่ทราบว่าฉันสามารถเปลี่ยนชื่อโฟลเดอร์ตามชื่อเดิมได้อย่างไร

หากคุณมีความคิดเห็นเกี่ยวกับวิธีดำเนินการต่อ โปรดมีส่วนร่วม


person BenFradet    schedule 27.03.2013    source แหล่งที่มา


คำตอบ (1)


ลอง for วนซ้ำ:

for dir in `find . -type d -depth X -name '*123*'` ; do
    mv "$dir" "${dir/123/321}"
done

หมายเหตุ: คุณต้องแก้ไข X ในด้านบน และอาจล้มเหลวหากมีเส้นทางเช่น './dir123/dir123/'

person Zsolt Botykai    schedule 27.03.2013
comment
ขอบคุณมาก มันใช้งานได้หลังจากที่ฉันลบภาคแสดงความลึกออก - person BenFradet; 27.03.2013