איך לשנות שמות של קבצים ב-Linux

אתה חדש למערכת ההפעלה Linux? אם כן, משימות נפוצות כמו שינוי שמות קבצים ותיקיות עשויות להיות שונות ממה שאתה רגיל אליו. אבל אל תדאג. המושג של שינוי שמות קבצים ב-Linux דומה לכך כיצד זה נעשה במערכות ההפעלה האחרות.

במדריך זה, תלמד דרכים רבות לשנות שמות של קבצים יחידים ומרובים ב-Linux, הן דרך ממשק גרפי והן דרך ביצוע פקודות בטרמינל.

בוא נתחיל!

דרישות מוקדמות

כדי להמשיך במדריך זה, וודא שיש לך את הפריטים הבאים:

שינוי שמות קבצים ב-Linux עם מנהל הקבצים

אם אתה רגיל לניהול קבצים דרך ממשק גרפי, בוא נתחיל את המדריך לשינוי שמות קבצים עם מנהל הקבצים. מנהלי קבצים עם ממשק גרפי הם נחמדים מאוד מכיוון שאתה רואה את הקבצים במבט פשוט. אחד מהם, המנהל הקובץ הקודם של GNOME, נאוטילוס, זמין ב-Linux. מדריך זה מדגים שינוי שמות של קבצים באמצעות מנהל הקבצים נאוטילוס.

מנהלי קבצים אחרים של Linux הם Konqueror, Dolphin, Krusader, Thunar, Nemo file manager, ו־Sunflower file manager. מנהלי הקבצים הללו מבצעים את אותה המשימה, אך שינוי של שמות קבצים או ספריות יכול להיות מעט שונה.

הפעל את הטרמינל שלך, ואז הפעל את הפקודה הבאה כדי להתקין את Nautilus (install nautilus) עם מנהל החבילות apt אם אין לך אותו עדיין במכשיר שלך. הפקודה sudo מעלה את הפקודה עם הרשאות sudo/administrator.

sudo apt install nautilus

שינוי שם של קובץ יחיד

שינוי שם של קובץ יחיד ב־Nautilus לוקח רק מספר לחיצות, כמו ב־Windows File Explorer.

כדי לשנות את שם הקובץ היחיד, פתח את Nautilus, לחץ ימינה על הקובץ שברצונך לשנות את שמו, ובחר באפשרות Rename, כפי שמוצג למטה.

דוגמה זו מתמקדת בשינוי שמות של קבצים, אך התהליך זהה לשינוי שמות של קבצים וגם ספריות.

Renaming a Single File

עכשיו הקלד את שם הקובץ החדש כדי להחליף את שם הקובץ המקורי, לחץ Enter או לחץ על Rename, וזהו.

Entering New File Name

שינוי שמות רבים של קבצים באמצעות מנהל הקבצים Nautilus

כמו בווינדוס, אובונטו מעניקה לך אפשרויות נוספות על כיצד ברצונך לשנות שמות של קבצים מרובים בבת אחת.

כדי לשנות שמות של מספר קבצים, בחר את כל הקבצים שברצונך לשנות שמם, לחץ ימינה על אחד מהם ובחר Rename. חלון קופץ יופיע שבו תוכל לבחור כיצד ברצונך לשנות את שמות הקבצים שבחרת.

Renaming Multiple Files Using Nautilus.

למטה, ישנם שני אפשרויות לבחירה בהתאם לכיצד ברצונך לשנות את שמות הקבצים שנבחרו.

  • שינוי שם באמצעות תבנית – מאפשר לך לשנות שמות של קבצים בהגדרות מסוימות.
  • חיפוש והחלפת טקסט – מאפשר לך למצוא ולהחליף טקסטים מסוימים בשמות הקבצים.

שינוי שמות קבצים באמצעות תבנית

כדי לשנות שמות של קבצים באמצעות תבנית, בחר באפשרות Rename using a template.

כעת הכנס את שם ההחלפה בשדה הריק כדי לשנות שמות קבצים באמצעות תבנית, ולחץ על הכפתור +Add ובחר מתוך התבניות. למדריך זה, בחר את האפשרות הראשונה (1,2,3,4) ולחץ על Rename. אפשרות זו מוסיפה מספרים מגדלים לכל קובץ אחרי שם הקובץ החדש (טקסט1, טקסט2,…).

Renaming Files using a Template

שים לב ששמות הקבצים שונו ל-טקסט, לאחר מכן מספרים זוגיים.

Verifying File Names Changed to “Text” with Incrementing Num

מציאת והחלפת מילים בשמות הקבצים

כדי לשנות את שמות הקבצים מרובים לשם קובץ מסוים, בחר באפשרות מצא והחלף טקסט.

הזן את הטקסט בשדה הטקסט הקיים ואת הטקסט המחליף בשדה החלף ב, ואז לחץ על שנה שם כדי להחליף את הטקסט. אפשרות זו מוצאת ומחליפה טקסטים מסוימים בשמות הקבצים.

Replacing Texts in File Names

כעת, אתה יכול לראות למטה שהחלפת את המילה "טקסט" ב-"קובץ" בכל שם קובץ.

Verifying the word “Text” was replaced with the word “File” on Each File

שינוי שמות קבצים עם פקודת mv

אם לריצת פקודות תוכנה היא הדבר שלך במקום לנווט בממשק משתמש גרפי, התכונן ללמוד איך לשנות שמות קבצים בטרמינל. לשנות שמות קבצים בטרמינל של לינוקס דומה לעשות זאת בסביבת שורת פקודה אחרת, כגון PowerShell. אתה מריץ את הפקודות כדי לשנות את שם הקובץ המקורי לשם הקובץ היעד, וזהו.

ישנם שני תרחישים בשינוי שם קובץ. הראשון הוא לשנות שם קובץ מהתיקיה העבודה, והשני הוא על ידי ציון הנתיב המלא. תבחן את תחביר הפקודה mv למטה כדי לשנות את שם הקובץ, כאשר source הוא השם המקורי, ו-destination הוא השם המחליף.

# לשנות את שם הקובץ או התיקייה בתיקיה העבודה
mv <source> <destination>
# לשנות את שם הקובץ על ידי ציון הנתיב המלא
mv <~/mydir/source> <~/mydir/destination>

שינוי שם קובץ יחיד עם פקודת mv

בזמן שתחבר לך סינטקס של פקודת ה- mv טרייה על דעתך, בוא ננסה לשנות את שם הקובץ היחיד.

כדי להדגיש איך לשנות את שם הקובץ והתיקייה:

# יצירת תיקייה בשם 'test'
mkdir test 
# שינוי התיקייה ל- ~/test
cd test 
# יצירת קבצי טקסט בשמות 'file1.txt' ו-'file2.txt'
touch file1.txt file2.txt 

בנוסף, הרץ את פקודת ה-ls כדי לראות את הקבצים בתוך התיקייה הפעילה. למטה, תוכל לראות שהקבצים file1.txt ו־file2.txt קיימים בתיקייה ~/test.

Listing Files in the Working Directory

הרץ אחת מפקודות ה-mv למעלה כדי לשנות את השם של file1.txt ל־file10.txt.

# שינוי שם קובץ בתיקייה הפעילה
mv file1.txt file10.txt

# שינוי שם קובץ על ידי ציון נתיב מלא
mv ~/test/file1.txt ~/test/file10.txt

שינוי שם תיקייה דומה לשינוי שם קובץ, כמו כן: mv ~/test ~/demo. הסימן ~ מציין את תיקיית הבית.

לבסוף, הרץ מחדש את פקודת ה-ls כדי לראות את הקבצים בתיקייה הפעילה.

למטה, תוכל לראות שהקובץ file1.txt שונה עתה לשם file10.txt.

Confirming file1.txt is renamed as file10.txt

שינוי שמות למספר קבצים באמצעות לולאת For

אם אתה עסוק מדי במשימות אחרות ורוצה לשנות את שמות הקבצים בפעם אחת, יהיה עליך להשתמש בהצהרת לולאת for כמו בדוגמה למטה.

העתק את הקוד למטה כפי שהוא, הדבק אותו בטרמינל שלך, ולחץ על Enter. הקוד סורק כל קובץ טקסט בספריית העבודה ומשנה את שמות הקבצים ל-"File" עם מספר מזהה עולה.

# מצהיר על משתנה עם ערך של 1
i=1 
# סורק כל קובץ טקסט בספריית העבודה
for file in *.txt; 
# חוזר על הפקודה למטה עד שכל הקבצים נסרקים
do 
  # משנה את שם כל קובץ ל-"File" עם מספר מזהה עולה ($i)
	mv -- "$file" "File$i.txt"
  # מעלה את ערך המספר הנוכחי של המשתנה ב-1
  i=$((i+1)) 
done

הדבקת הקוד לטרמינל שלך עובדת טוב, אך כמיומנות, יותר טוב ליצור קובץ סקריפט שתרוץ במקום.

למטה, ניתן לראות בפעולה איך הקוד משנה את שמות כל הקבצים.

Renaming Files with a For Loop

שינוי שמות הקבצים ב-Linux עם הכלי rename

אם אתה משנה את שם הקובץ היחיד בקריאה היומית שלך, אז פקודת ה־mv תהיה מספיקה. אך אולי אתה רוצה לשנות את שמם של מספר קבצים באופן אוטומטי עם אותו תבנית? לדוגמה, לשנות את שמם של קבצים שמתחילים במילה מסוימת (קובץ). במקרה כזה, התקן את תוכנת ה־rename.

תוכנת ה־rename משנה את שמם של מספר קבצים, משנה את תבניות שמות הקבצים ומכסה קבצים.

כדי להתקין את תוכנת ה־rename, הרץ אחת מהפקודות למטה בהתאם להפצת ה־Linux שעליה אתה עובד.

# התקן את תוכנת ה־rename עם מנהל החבילות apt עבור Ubuntu, Debian ו־Linux Mint
sudo apt install rename
# התקן את תוכנת ה־rename עם מנהל החבילות dnf עבור CentOS, Fedora ו־Red Hat
sudo dnf install prename
# התקן את תוכנת ה־rename עם מנהל החבילות pacman עבור Arch Linux / Manjaro Linux
sudo pacman -S perl-rename

תחת אתה יכול לראות את תחתון הפקודה של פקודת ה־rename.

rename <options> <perlexpr> <files>

שינוי שמות מרובים של קבצים

עם התחתון של פקודת ה־rename בתודעה, אתה יכול כעת לשנות את שמות הקבצים שיש להם אותה תבנית. מה שמצוין בפקודת ה־rename הוא שאין צורך להצהיר על פונקציית לולאה כדי לשנות את שמות הקבצים הרבים כפי שעשית בקטע "שינוי שמות מרובים של קבצים עם לולאת For".

אולי ברצונך לשנות את שמות הקבצים עם מילים מסוימות עליהם. אם כן, תבדוק את ביטוי הרגיל של Perl ('s/file/myfile/') בפקודת הדוגמה למטה. ביטויי הרגיל של Perl מגדירים תבנית מחרוזת בהתבסס על שפת התכנות Perl.

כדי למנוע משינוי שמות של קבצים אחרים בטעות, רשום את כל הקבצים המושפעים לפני שתשנה אותם על ידי הוספת האפשרות -n, כפי שמוצג למטה.

rename -n 's/file/myfile/' *.txt
Listing Affected Files Before Renaming

עכשיו הריץ אחת מהפקודות rename למטה כדי להחליף את המילה file במילה myfile בשם של כל קובץ טקסט בתוך ספריית העבודה או בספריית ~/test/*.txt.

בביטוי של Perl ('s/file/myfile/'), האפשרות s מציינת החלפה, שפירושה שאתה משנה את שמות הקבצים. שים לב שהאפשרות -v מוסיפה להחזיר אילו קבצים הפקודה שינתה.

# החלף 'file' ב 'myfile' בשם כל קובץ בתוך ספריית העבודה
rename -v 's/file/myfile/' *.txt
# החלף 'file' ב 'myfile' בשם כל קובץ בתוך ספריית ~/test
rename -v 's/file/myfile/' ~/test/*.txt

בתמונה למטה, ניתן לראות שכל המופעים של "file" בקבצי הטקסט הוחלפו ב"myfile".

Renaming a Files with the rename Command

אם אתה מעדיף לשנות את שמות הקבצים במקום, הסר את סיומת הקובץ כאשר אתה מציין את נתיב הקובץ, לדוגמה, rename -v 's/file/myfile/' ~/test/*

שינוי סיומות הקבצים

למעבר לשמות הקבצים, פקודת rename גם משנה סיומות קבצים. אולי יש לך קבצים שנוצרו עם סיומת קובץ שגויה. במקרה כזה, יש לציין את סיומת הקובץ שברצונך לשנות בביטוי בפרל בזמן הרצת פקודת rename.

הרץ את פקודת rename למטה כדי לשנות את כל הקבצים (*) מסיומת .txt לסיומת .html בתיקייה ~/test. הסמל $ בביטוי הפרל מתאים לסיום מחרוזת (.txt) לכל שם קובץ, כך שהפקודה משנה רק סיומות של קבצים בסיומת .txt. וכמו במקרה של שינוי שמות רבים, הוסף את האפשרות -v כדי לרשום כל שינוי שהפקודה עושה.

rename -v 's/.txt$/.html/' *.txt

כדי להסיר את כל סיומות הקבצים במקום, הסר את מחרוזת ההחלפה בביטוי הפרל, כמו כן: rename -v 's/.txt$//' *.txt

כפי שאתה יכול לראות בתמונה למטה, ה.txt הוחלפו ב.html

Changing File Extensions from .txt to .html

שינוי שמות הקבצים לאותיות רישיות וקטנות

במקום סיומות קבצים שגויות, ייתכן שתתמודד עם שמות קבצים באותיות קטנות או רישיות. אולי אתה מנסה למצוא קובץ באותיות רישיות, מבלי לדעת ששם הקובץ הוא באותיות קטנות.

לינוקס הוא רגיש לתיקיות, אז נוודא שיש לך את כל תיקיות הקבצים עם תיקיות התוויות הנכונות. תיקיות האותיות הן בעצם ההבחנה בין טקסטים בין אותיות קטנות וגדולות.

הרץ אחד מהפקודות rename למטה כדי לשנות את כל שמות הקבצים באותיות קטנות (a-z) בתיקיית העבודה (*) לאותיות גדולות (A-Z) ולהיפך.

# שינוי שם הקובץ מאותיות קטנות לאותיות גדולות
rename -v 'y/a-z/A-Z/' *
# שינוי שם הקובץ מאותיות גדולות לאותיות קטנות
rename -v 'y/A-Z/a-z/' *

ניתן לראות למטה את שני התוצאות של שינוי האותיות בשם הקובץ.

Changing File Name from Lowercase to Uppercase and Vice Versa

החלפת רווחים והסרתם משמות הקבצים

כמו בתיקיות האותיות של שמות קבצים, עשוי להיות לך בעיה במציאת קבצים אם יש להם רווחים בשמות הקבצים שלהם. נתקן את זה על ידי החלפת הרווחים בתו או הסרת הרווחים לחלוטין.

הריץ את הפקודה rename למטה כדי להחליף רווחים בכל שמות הקבצים בקו תחתון (_) בתיקיית העבודה. מאחר והקו תחתון הוא תו מטא-תו, עליך להבריג אותו עם סימן הקרוס (\\_) כדי להצהיר על הקו תחתון באופן ליטרלי. מטא-תווים הם תווים מיוחדים עם משמעויות מיוחדות בתוכנית מחשב.

שימו לב שה־g בביטוי ה־Perl אומר לפקודה להחליף את כל ההתאמות (רווחים), ולא רק הראשון.

rename -v 's/ /\\_/g' *

מתחת לכך, ניתן לראות שהפקודה החליפה את כל הרווחים בקווים תחתונים.

Replacing spaces with underscores in a file name

כדי להסיר את כל הרווחים בשם קובץ במקום למלא אותם בתו, הפעילו את הפקודה הבאה.

בביטוי ה־Perl למטה, הכוכבית אחרי הרווח ריקה (/ *) מתאימה לכל המופעים של רווחים בשם קובץ ולא רק הראשון. התו להחלפה הוא ריק (//), כך שהפקודה rename מסירה את כל הרווחים (g).

rename -v "s/ *//g" *

עכשיו ניתן לראות מתחת שכל הרווחים הוסרו מכל שם קובץ.

Removing all spaces in filenames

כתיבת האות הראשונה של כל מילה בשם קובץ באות רישא

אם תעדיפו לשמור על הרווחים ולכתוב את האות הראשונה של כל מילה בשם קובץ באות רישא, תצטרכו ביטוי Perl מורכב יותר. ראו את הפקודה הדוגמא למטה.

הביטוי Perl למטה מתאים לכל תו יחיד (\\w) בגבול מילה (\\b) כל עוד התו אינו נקודה או אגרוף (?<![.'\\'']). הפקודה rename תתרגם אז את האות ההיא לאות גדולה (u$&).

rename -v 's/(?<![.'\\''])\\b\\w*/\\u$&/g' *

מתחת ניתן לראות שכל מילה בשמות הקבצים מתחילה באות רישא בעוד התוספות נשארות ללא שינוי.

Capitalizing First Letter of Each Word in File Names

סיכום

במהלך המדריך הזה, למדת המון דרכים לשנות שמות של קבצים בלינוקס דרך ממשק משתמש גרפי וגם דרך טרמינל בשורת פקודה. כעת יש לך הבנה מוצקה של כיצד לנהל את שמות הקבצים, בין אם זה לקובץ יחיד או למספר קבצים בו זמנית.

למה לא ללמוד גם סקריפטינג בשפת הסקריפט של לינוקס, וליצור סקריפט שיאפשר אוטומציה של תהליכי שינוי שמות קבצים בלינוקס?

Source:
https://adamtheautomator.com/rename-files-in-linux/