כיצד להשתמש בשם הפקודה ב- Linux

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

מה לא בסדר עם mv?

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

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

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

כדי mvלשנות את שם סוג הקובץ mv, רווח, שם הקובץ, רווח ושם חדש שתרצה שיהיה לקובץ. ואז לחץ על Enter.

אתה יכול להשתמש  lsכדי לבדוק את שמו של הקובץ.

mv oldfile.txt newfile.txt
ls * .txt

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

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

הדברים מסלימים במהירות.

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

איך אנו מתגלעים mvלעשות זאת עבורנו? בואו נסתכל על הקבצים.

ls * .prog -l

הנה דרך אחת לעשות זאת שאינה נוקטת בכתיבת קובץ סקריפט בפועל של Bash.

עבור f ב * .prog; do mv - "$ f" "$ {f% .prog} .prg"

האם זה עבד? בואו נבדוק את הקבצים ונראה.

ls * .pr *

אז כן, זה עבד. כולם קבצי ".prg" כעת, ואין קבצי ".prog" בספריה.

מה קרה הרגע?

מה באמת עשתה אותה פקודה ארוכה? בואו נשבר את זה.

עבור f ב * .prog; do mv - "$ f" "$ {f% .prog} .prg"

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

החלק הבא אומר מה העיבוד יהיה לעשות . הוא משתמש  mvבכדי להעביר כל קובץ לקובץ חדש. הקובץ החדש ייקרא שם עם שם הקובץ המקורי, למעט החלק ".prog". במקום זאת ישמש סיומת חדשה של ".prg".

חייבת להיות דרך פשוטה יותר

בהחלט. זו renameהפקודה.

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

בהפצות שמקורן באובונטו ודביאן אתה מתקין renameכך:

sudo apt-get להתקין שם

בהפצות שמקורן בפדורה וב- RedHat אתה מתקין prenameכך. שימו לב ל" p "הראשוני, שמייצג את Perl.

sudo dnf להתקין שם מקדים

כדי להתקין אותו במנג'רו לינוקס השתמש בפקודה הבאה. שים לב שפקודת שינוי שם נקראת perl-rename.

sudo pacman -Syu perl-rename

בואו נעשה את זה שוב

והפעם נשתמש rename. נחזיר את השעון לאחור כך שיהיה לנו קבוצה של קבצי ".prog".

ls * .prog

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

שנה את שם s / .prog / .prg / '* .prog
ls * .pr *

זה עבד, עכשיו כולם קבצי ".prg", ולא נותרו קבצי ".prog" בספריה.

מה קרה בזמן הזה?

בואו נסביר את מעט הקסם הזה, בשלושה חלקים.

החלק הראשון הוא שם הפקודה, rename(או prenameאו perl-rename, עבור ההפצות האחרות).

החלק האחרון הוא *.prog, renameשמורה לפעול על כל קבצי ".prog".

החלק האמצעי מגדיר את העבודה שאנחנו רוצים לעשות בכל שם קובץ. sתחליף האמצעים. המונח הראשון ( .prog) הוא מה renameשיחפש בכל שם קובץ ובמונח השני ( .prg) הוא יוחלף.

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

שינוי חלקים אחרים של שם קובץ

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

בספרייה ישנם הרבה קבצי קוד מקור. קידומת כל שמות הקבצים היא "סלנג_". אנחנו יכולים לבדוק את זה עם ls.

ls sl *. ג

אנו הולכים להחליף את כל המופעים של "סלנג_" ב- "sl_". פורמט הפקודה כבר מוכר לנו. אנו רק משנים את מונח החיפוש, מונח ההחלפה וסוג הקובץ.

שנה את שם 's / slang_ / sl_' *. ג

הפעם אנו מחפשים קבצי ".c" ומחפשים "slang_". בכל פעם ש- "slang_" נמצא בשם קובץ הוא מוחלף ב- "sl_".

אנו יכולים לבדוק את התוצאה של פקודה זו על ידי חזרה על lsהפקודה מלמעלה באותם פרמטרים:

ls sl *. ג

מחיקת חלק משם הקובץ

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

ls *. ג
שנה את שם s / sl _ // '*. ג
ls *. ג

אנו יכולים לראות lsמהפקודה כי כל קבצי ה- ".c" שלנו מכוונים "sl_". בואו ניפטר מזה לגמרי.

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

renameיעבד כל קובץ ".c" בתורו. זה יחפש "sl_" בשם הקובץ. אם הוא נמצא, הוא לא יוחלף בכלום. במילים אחרות, מונח החיפוש נמחק.

השימוש השני lsבפקודה מאשר כי קידומת "sl_" הוסרה מכל קובץ ".c".

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

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

ls * param *
שנה את שם 's / param / parameter' *. ג
ls * param *

ארבעה קבצים נמצאים עם "param" בשם הקובץ שלהם. param.c, param_one.c ו- param_two.c לכולם יש "param" בתחילת שמם. ל- third_param.c יש "param" בסוף שמו, ממש לפני הסיומת.

renameפקוד הולכת לחפש "פרמטר" בכל מקום בשם הקובץ, ולהחליפו "פרמטר" בכל המקרים.

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

אנו יכולים להשתמש במטא-תווים של פרל כדי לחדד את התנהגות הביטוי האמצעי. מטא-תווים הם סמלים המייצגים מיקומים או רצפי תווים. לדוגמה, ^פירושו "התחלה של מחרוזת", $פירושו "סוף מחרוזת", .ופירושו כל תו בודד (מלבד תו חדש).

אנו נשתמש בהתחלה של מטא-אופי מחרוזת ( ^) כדי להגביל את החיפוש שלנו לתחילת שמות הקבצים.

ls * param *. ג
שנה את שם הפרמטר / ^ / ערך / '*. ג
ls * param *. ג
ערך ls *. ג

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

renameהפקודה שלנו משתמשת בתחילת השורה  (^) מטא-תו לפני מונח החיפוש "פרמטר". זה אומר renameלשקול רק את מונח החיפוש שנמצא אם הוא נמצא בתחילת שם הקובץ. מתעלם מ- "פרמטר" מחרוזת החיפוש אם הוא נמצא במקום אחר בשם הקובץ.

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

כוחם של renameטמון בכוחו של פרל. כל הכוח של פרל עומד לרשותכם.

חיפוש עם קיבוצים

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

בדוגמה זו אנו משתמשים ls כדי לבדוק אילו קבצים יש לנו שמתחילים עם "str". ישנם שניים מהם, string.c ו- strangle.c. אנו יכולים לשנות את שם שני המיתרים בבת אחת באמצעות טכניקה הנקראת קיבוץ.

הביטוי המרכזי של renameפקודה זו יחפש מחרוזות בתוך שמות קבצים הכוללים את רצף התווים "stri" או "stra" כאשר לרצפים אלה מיד אחריו "ng". במילים אחרות, מונח החיפוש שלנו הולך לחפש "המחרוזת" ו "סטרנג". מונח ההחלפה הוא "בנג".

ls str * .c
שנה את שם s / (stri | stra) ng / bang / '* .c
האיסור *. ג

שימוש  ls בפעם השנייה מאשר כי string.c הפך ל- bang.c ו- strangle.c הוא כעת bangle.c.

שימוש בתרגומים עם שם חדש

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

בשנות ה renameהפקודה מתחת להודעה שאנחנו לא באמצעות s/ להתחיל את הביטוי המרכזי, שבו אנחנו משתמשים y/. זה אומר  renameשאנחנו לא מבצעים החלפה; אנו מבצעים תרגום.

a-z המונח הוא ביטוי Perl זה אומר האותיות הקטנות ברצף מאל"ף ועד ת"ו. באופן דומה, A-Z המונח מייצג את כל האותיות הגדולות ברצף מא 'עד ת'.

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

כדי לאלץ את שמות הקבצים של כל קבצי ".prg" באותיות רישיות, השתמש בפקודה זו:

שנה את שם 'y / az / AZ /' * .prg

ls * .PRG

lsמופעים הפקודה לנו שכל שמות קבצים ".prg" נמצאים כעת רישיות. למעשה, כדי להיות מדויקים לחלוטין, הם כבר לא קבצי ".prg". הם קבצי ".PRG". לינוקס רגישה לאותיות רישיות.

אנחנו יכולים להפוך כי פקוד האחרונה על ידי היפוך בעמדה a-zואת A-Z מונחי הביטוי המרכזי.

שנה את שם 'y / AZ / az /' * .PRG

ls * .prg

אתה (Wo | Do) לא לומד את פרל בחמש דקות

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