שימוש בפקודת המיון של Bash כדי למיין קבצים כמו מומחה

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

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

בואו נתחיל במיון!

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

מדריך זה משתמש ב-Ubuntu 20.04, אך כל הפצת Linux תעבוד.

מיון קבצים ב-Bash בסדר אלפביתי

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

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

ls -l
Bash Sort to Sort Files Alphabetically

כברירת מחדל, פקודת ls מצייגת קבצים בסדר עולה. כדי להפוך את סדר המיון, עבור את הדגל -r לפקודת ls -l, כמו כן: ls -lr. העברת הדגל -r לפקודת ls -l מתייחסת לדוגמאות אחרות במדריך זה.

שימוש ב-Bash Sort כדי לסדר קבצים לפי גודלם

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

למיין קבצים לפי גודל, העבר את הדגל -S כדי להודיע לפקודת ls למיין את רשימת הקבצים לפי גודל הקובץ.

הפעל את הפקודה למטה כדי לרשום קבצים (ls) ממוינים לפי גודל הקובץ בפורמט רשימה ארוכה (-lS).

ls -lS

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

להפוך את סדר המיון (מהקטן לגדול), הוסף את הדגל -r, כך: ls -lSr

Sorting Files by Size

מיון קבצים לפי זמן שינוי דרך מיון Bash

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

הפעל את הפקודה למטה כאשר הפרמטר -t מודיע לפקודת ls למיין את הקבצים לפי זמן השינוי.

ls -lt
Sorting Files in a Directory by Modification Time

מיון קבצים לפי סיומת הקובץ

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

בצע את הפקודה למטה כדי לרשום קבצים (ls) בתיקיית העבודה ולמיין לפי סיומותיהם (-lx).

ls -lX

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

Sorting Files by File Extension

מיון תוכן בקובץ טקסט

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

הרץ את הפקודה למטה כדי ליצור קובץ טקסט בשם ~/data/fruits.txt המכיל שמות של פירות. הדגל -e מאפשר פרשנות של סימן נקודה חזרה כדי לכתוב כל מילה בשורה חדשה (\n).

echo -e "apple \nmango \nwatermelon \ncherry \norange \nbanana" > fruits.txt

עכשיו הרץ את הפקודה למטה כדי למיין כל מילה בקובץ fruits.txt.

sort fruits.txt

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

Sorting File’s Content Alphabetically in Ascending Order

ללא שום דגלים, פקודת sort ממיינת את תוכן הקובץ בסדר עולה כברירת מחדל. כדי להפוך את סדר המיון, הוסף את הדגל -r לפקודת המיון, כמו כן: sort -r fruits.txt. המיון בסדר הפוך על ידי הוספת הדגל -r חל גם לדוגמאות אחרות במדריך זה.

מיון רשימת מספרים בקובץ טקסט

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

הרץ את הפקודה למטה כדי ליצור קובץ בשם ~/data/scores.txt המכיל מספרים אקראיים, כל אחד בשורה חדשה.

echo -e "45 \n69 \n52 \n21 \n3 \n5 \n78" > scores.txt

עכשיו הרץ את הפקודה למטה כדי למיין את המספרים (-n) בקובץ ~/data/scores.txt.

sort -n scores.txt

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

Sorting Numbers in a File

מיון רשימת מספרי גרסה בקובץ טקסט

אולי יש לך רשימת מספרי גרסה בקובץ טקסט שאתה רוצה למיין. אם כן, הוספת האפשרות --version-sort תפתור את הבעיה.

כדי להדגים איך עובדת האפשרות --version-sort, נצרף קובץ טקסט תחילה.

הרץ את הפקודה למטה כדי ליצור קובץ טקסט בשם ~/data/versions.txt עם מספרי גרסה אקראיים מופיעים, כל אחד בשורה חדשה (\n).

echo -e "1.0.0.1 \n 6.2.1.0 \n4.0.0.2" > versions.txt

עכשיו הרץ את הפקודה למטה כדי למיין את מספרי הגרסה (--version-sort) בקובץ versions.txt. האפשרות --field-separator מסבירה לפקודת sort שהמספרים בכל גרסה מופרדים על ידי נקודה (.). תוכל לשנות את מפריד השדות לכל תו שמפריד את המספרים בגרסאות המצויות בקובץ הטקסט שלך.

sort --version-sort --field-separator=. versions.txt
Sorting Version Numbers from a Text File

מיון Bash כדי למצוא ולמיין קבצים לפי סיומת קובץ

עד כה בדוגמאות הקודמות הרצת פקודות יחידות (או ls או sort). אך בתכנות, לעיתים תצטרך להשתמש בשתי או יותר פקודות ביחד. כיצד? על ידי צינור של פקודה אחת לאחרת.

הרץ את הפקודה הבאה כדי למצוא את כל קבצי המרקדאון (-iname "*.md") בתיקיית העבודה (.), ולמיין אותם בסדר ירוד לפי האלפבית (sort -r). תנסה למצוא ולמיין קבצים אחרים על ידי שינוי "*.md" לסיומת קובץ אחרת.

find . -iname "*.md" | sort -r
Finding and Listing Files in Alphabetically Descending Order

אם אתה מעדיף לשמור את הפלט הממויין לקובץ טקסט במקום לפלט סטנדרטי בקונסול, הוסף את אפשרות --output, כמו כן: find . -iname "*.md" | sort -r --output=sorted.txt. אפשרות --output מספרת לפקודת sort ליצור קובץ פלט עבור הרשימה הממויינת של הקבצים.

מסקנה

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

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

Source:
https://adamtheautomator.com/bash-sort/