כיצד להשתמש בשם הפקודה ב- 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
הפקודה, אינך צריך להיות בעל ידע רב בפרל כלל כדי לקצור יתרונות גדולים בכוח, בפשטות ובזמן.