تالار گفتمان nCIS.ir

نسخه‌ی کامل: تغییر گروهی نام فایل ها
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام برای تغییر گروهی اسم file ها در لینوکس از چه کدی باید استفاده کنیم؟
مثلاً چه جور تغییر نامی موردنظرتونه؟ اسامی مبدأ و مقصد رو مشخص کنید تا دستورش رو درصورت امکان بگذاریم.
در این مورد نام فایل های منبع هر چیزی میتونه باشه و نام فایل های مقصد به ترتیب:‌ a1 , a2 , a3 , ...
ولی اگر امکانش هست یک دستور کلی برای این کار بفرمایید.
فرض میکنم میخواین تمام عکسهای یک پوشه رو که پسوند jpg. دارن شماره گذاری کنین. این کد رو امتحان کنید:
ls | cat -n | while read n f; do mv "$f" "a$n.jpg"; done

توضیح:
  1. ls فایلهای یک پوشه رو فهرست میکنه
  2. cat -n بهشون شماره خط رو اضافه میکنه
  3. while read n f تا وقتی که بتونه یه خط بخونه، قسمت اول رو توی متغیر n و قسمت دوم رو توی f ذخیره میکنه
  4. "do mv "$f" "a$n.jpg دستور mv رو برای تغییر نام اجرا میکنه و f$ یعنی اسم فایل میشه پارامتر اول و a$n.jpg میشه پارامتر دوم
  5. done هم پایان حلقه while رو مشخص میکنه

نکته: تستش نکردم ولی باید کار کنه.

یادآوری: bash فقط یه خط فرمان نیست، یه زبان برنامه نویسیه.
یه راه دیگه: این کد رو به اسم myrename داخل مسیر usr/bin/ ذخیره کنید:
#!/bin/sh
num=1
for file in *.jpg; do
   mv "$file" "a$(printf "%u" $num).jpg"
   let num=$num+1
done

حالا کافیه توی هر پوشه ای که هستین، دستور myrename رو اجرا کنید تا تمام عکسهای jpg. اون پوشه با فرمت a1.jpg و a2.jpg و... شماره گذاری بشن.