دستورات پیشرفته rename برای تغییر نام فایل‌ها و پوشه‌ها در لینوکس پرینت


# ✨ دستورات پیشرفته `rename` برای تغییر نام فایل‌ها و پوشه‌ها در لینوکس
### تغییر نام گروهی فایل‌ها با قدرت عبارات باقاعده (Regex)

در لینوکس، دستور `rename` ابزاری قدرتمند و منعطف برای تغییر نام دسته‌جمعی فایل‌ها و دایرکتوری‌ها است. برخلاف `mv` که فقط برای یک فایل یا پوشه کاربرد دارد، `rename` می‌تواند صدها فایل را تنها با یک دستور تغییر دهد.

---

## 🔧 نسخه‌های مختلف `rename`

در توزیع‌های مختلف لینوکس، ممکن است دو نسخه از `rename` وجود داشته باشد:

| نسخه | زبان پیاده‌سازی | قدرت |
|------|------------------|--------|
| `util-linux rename` | C | ساده |
| `perl rename` | Perl | قدرتمند و Regex محور ✅ |

برای این آموزش ما از نسخه **Perl-based** استفاده می‌کنیم که معمولاً به صورت پیش‌فرض در Debian/Ubuntu با نصب پکیج زیر میاد:

```bash
sudo apt install rename
```

---

## ✅ سینتکس کلی:

```bash
rename 's/الگوی_قدیمی/الگوی_جدید/' فایل‌ها
```

> `s` مخفف **substitute**، و از عبارات باقاعده (regex) برای تطبیق استفاده می‌کنه.

---

## 🧪 مثال‌های کاربردی:

### 1. تغییر پسوند `.txt` به `.md`:

```bash
rename 's/\.txt$/.md/' *.txt
```

---

### 2. حذف یک کلمه از نام فایل‌ها:

```bash
rename 's/^temp_//' temp_*.log
```

> تمام فایل‌هایی که با `temp_` شروع می‌شن، این پیشوند ازشون حذف می‌شه.

---

### 3. تبدیل حروف بزرگ به کوچک:

```bash
rename 'y/A-Z/a-z/' *
```

> تمام حروف نام فایل‌ها رو به کوچک تبدیل می‌کنه.

---

### 4. افزودن پیشوند به فایل‌ها:

```bash
rename 's/^/new_/' *.jpg
```

> فایل‌هایی مثل `image1.jpg` به `new_image1.jpg` تبدیل می‌شن.

---

### 5. افزودن پسوند جدید:

```bash
rename 's/$/.bak/' *.conf
```

> به انتهای فایل‌های `.conf` پسوند `.bak` اضافه می‌شه.

---

### 6. تغییر الگوی عددی در نام فایل‌ها:

```bash
rename 's/file_(\d+)/file-$1/' file_*.txt
```

> `file_123.txt` به `file-123.txt` تغییر می‌کنه.

---

## 👁‍🗨 پیش‌نمایش قبل از تغییر:

برای دیدن اینکه دستور چی قراره تغییر بده، قبل از اجرا از گزینه‌ی `-n` استفاده کن:

```bash
rename -n 's/\.log$/.bak/' *.log
```

> این فقط تغییرات رو نمایش می‌ده، اعمال نمی‌کنه.

---

## 🔄 حالت بازگشتی با `find` (برای پوشه‌ها)

`rename` به‌صورت پیش‌فرض روی دایرکتوری‌های داخل زیرپوشه‌ها کار نمی‌کنه. برای اینکار از `find` کمک بگیر:

```bash
find . -type f -name "*.JPG" -exec rename 's/\.JPG$/.jpg/' {} \;
```

---

## 🚫 نکات مهم:

- همیشه قبل از اجرای نهایی، از گزینه `-n` استفاده کن.
- دقت کن که regex درست بنویسی؛ اشتباه ممکنه باعث تغییرات ناخواسته بشه.
- بهتره قبل از rename گروهی، از فایل‌ها بکاپ بگیری.

---

## 📚 جمع‌بندی دستورات پرکاربرد:

| دستور | کاربرد |
|--------|--------|
| `rename 's/a/b/'` | جایگزینی `a` با `b` |
| `rename 'y/A-Z/a-z/'` | حروف بزرگ به کوچک |
| `rename -n 's/x/y/'` | پیش‌نمایش تغییر |
| `rename 's/^/pre_/'` | افزودن پیشوند |
| `rename 's/$/.bak/'` | افزودن پسوند |

 


آیا این پاسخ به شما کمک کرد؟

  • 0
« برگشت