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

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

Find and Sort Files by Date and Time in Linux

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

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

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

כלי לינוקס לסדר קבצים בלינוקס

כמה כלים בשורת הפקודות של לינוקס הבסיסיים שמספיקים פשוטים לסידור ספריה בהתבסס על תאריך ו-שעה הם:

פקודת ls

ls – מפיל את תוכן התיקייה, יכול לרשום את הקבצים והתיקיות ואף להציג את כל המידע הקשור אליהם כולל: תאריך ושעת שינוי או גישה, הרשאות, גודל, בעלים, קבוצה וכו'

כבר כיסינו מאמרים רבים על פקודת ls ב-Linux ועל פקודת sort, תוכל למצוא אותם למטה:

  1. למידת פקודת ls עם 15 דוגמאות בסיסיות
  2. 7 דוגמאות לפקודות ls מתקדמות עם דוגמאות
  3. 15 שאלות ראיון שימושיות על פקודת ls ב-Linux

פקודת sort

sort – פקודה זו יכולה לשמש למיון הפלט של כל חיפוש רק על ידי כל שדה או עמודה ספציפית בשדה.

כבר עיסקנו בשני מאמרים על פקודת sort ב-Linux, תוכל למצוא אותם למטה:

  1. דוגמאות של 14 פקודות 'sort' ב-Linux – חלק 1
  2. 7 דוגמאות שימושיות לפקודת 'sort' ב-Linux – חלק 2

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

כמה דרכים למיון קבצים באמצעות תאריך ושעה

להלן רשימת הפקודות למיון על פי תאריך ושעה.

1. רשימת קבצים על פי זמן שינוי

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

# ls -lt

total 673768
-rwxr----- 1 tecmint tecmint  3312130 Jan 19 15:24 When You Are Gone.MP3
-rwxr----- 1 tecmint tecmint  4177212 Jan 19 15:24 When I Dream At Night - Marc Anthony-1.mp3
-rwxr----- 1 tecmint tecmint  4177212 Jan 19 15:24 When I Dream At Night - Marc Anthony.mp3
-rwxr----- 1 tecmint tecmint  6629090 Jan 19 15:24 Westlife_Tonight.MP3
-rwxr----- 1 tecmint tecmint  3448832 Jan 19 15:24 We Are The World by USA For Africa (Michael Jackson).mp3
-rwxr----- 1 tecmint tecmint  8580934 Jan 19 15:24 This Love.mp3
-rwxr----- 1 tecmint tecmint  2194832 Jan 19 15:24 The Cross Of Changes.mp3
-rwxr----- 1 tecmint tecmint  5087527 Jan 19 15:24 T.N.T. For The Brain 5.18.mp3
-rwxr----- 1 tecmint tecmint  3437100 Jan 19 15:24 Summer Of '69.MP3
-rwxr----- 1 tecmint tecmint  4360278 Jan 19 15:24 Smell Of Desire.4.32.mp3
-rwxr----- 1 tecmint tecmint  4582632 Jan 19 15:24 Silence Must Be Heard 4.46.mp3
-rwxr----- 1 tecmint tecmint  4147119 Jan 19 15:24 Shadows In Silence 4.19.mp3
-rwxr----- 1 tecmint tecmint  4189654 Jan 19 15:24 Sarah Brightman  & Enigma - Eden (remix).mp3
-rwxr----- 1 tecmint tecmint  4124421 Jan 19 15:24 Sade - Smooth Operator.mp3
-rwxr----- 1 tecmint tecmint  4771840 Jan 19 15:24 Sade - And I Miss You.mp3
-rwxr----- 1 tecmint tecmint  3749477 Jan 19 15:24 Run To You.MP3
-rwxr----- 1 tecmint tecmint  7573679 Jan 19 15:24 Roger Sanchez_Another Chance_Full_Mix.mp3
-rwxr----- 1 tecmint tecmint  3018211 Jan 19 15:24 Principal Of Lust.3.08.mp3
-rwxr----- 1 tecmint tecmint  5688390 Jan 19 15:24 Please Forgive Me.MP3
-rwxr----- 1 tecmint tecmint  3381827 Jan 19 15:24 Obvious.mp3
-rwxr----- 1 tecmint tecmint  5499073 Jan 19 15:24 Namstey-London-Viraaniya.mp3
-rwxr----- 1 tecmint tecmint  3129210 Jan 19 15:24 MOS-Enya - Only Time (Pop Radio mix).m

2. רשימת קבצים על פי זמן גישה אחרון

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

# ls -ltu

total 3084272
drwxr-xr-x  2 tecmint tecmint       4096 Jan 19 15:24 Music
drwxr-xr-x  2 tecmint tecmint       4096 Jan 19 15:22 Linux-ISO
drwxr-xr-x  2 tecmint tecmint       4096 Jan 19 15:22 Music-Player
drwx------  3 tecmint tecmint       4096 Jan 19 15:22 tor-browser_en-US
drwxr-xr-x  2 tecmint tecmint       4096 Jan 19 15:22 bin
drwxr-xr-x 11 tecmint tecmint       4096 Jan 19 15:22 Android Games
drwxr-xr-x  2 tecmint tecmint       4096 Jan 19 15:22 Songs
drwxr-xr-x  2 tecmint tecmint       4096 Jan 19 15:22 renamefiles
drwxr-xr-x  2 tecmint tecmint       4096 Jan 19 15:22 katoolin-master
drwxr-xr-x  2 tecmint tecmint       4096 Jan 19 15:22 Tricks
drwxr-xr-x  3 tecmint tecmint       4096 Jan 19 15:22 Linux-Tricks
drwxr-xr-x  6 tecmint tecmint       4096 Jan 19 15:22 tuptime
drwxr-xr-x  4 tecmint tecmint       4096 Jan 19 15:22 xdm
drwxr-xr-x  2 tecmint tecmint      20480 Jan 19 15:22 ffmpeg usage
drwxr-xr-x  2 tecmint tecmint       4096 Jan 19 15:22 xdm-helper

3. רשימת קבצים על פי זמן שינוי אחרון

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

# ls -ltc

total 3084272
drwxr-xr-x  2 tecmint tecmint       4096 Jan 19 15:24 Music
drwxr-xr-x  2 tecmint tecmint       4096 Jan 19 13:05 img
-rw-------  1 tecmint tecmint     262191 Jan 19 12:15 tecmint.jpeg
drwxr-xr-x  5 tecmint tecmint       4096 Jan 19 10:57 Desktop
drwxr-xr-x  7 tecmint tecmint      12288 Jan 18 16:00 Downloads
drwxr-xr-x 13 tecmint tecmint       4096 Jan 18 15:36 VirtualBox VMs
-rwxr-xr-x  1 tecmint tecmint        691 Jan 13 14:57 special.sh
-rw-r--r--  1 tecmint tecmint     654325 Jan  4 16:55 powertop-2.7.tar.gz.save
-rw-r--r--  1 tecmint tecmint     654329 Jan  4 11:17 filename.tar.gz
drwxr-xr-x  3 tecmint tecmint       4096 Jan  4 11:04 powertop-2.7
-rw-r--r--  1 tecmint tecmint     447795 Dec 31 14:22 Happy-New-Year-2016.jpg
-rw-r--r--  1 tecmint tecmint         12 Dec 18 18:46 ravi
-rw-r--r--  1 tecmint tecmint       1823 Dec 16 12:45 setuid.txt
...

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

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

הפקודות הבאות מציגות את השימוש ב- sort עם הפקודת find כדי למיין את רשימת הקבצים על פי תאריך ו- שעה.

כדי ללמוד עוד על הפקודת find, יש לעקוב אחר הקישור הזה: 35 Practical Examples of ‘find’ Command in Linux

4. מיון קבצים על פי חודש

כאן, אנו משתמשים בפקודת find כדי למצוא את כל הקבצים בתיקיית השורש (‘/’) ולאחר מכן להדפיס את התוצאה כך: חודש בו נגע בקובץ ואז את שם הקובץ. מתוך התוצאה המלאה, כאן אנו מפרטים את 11 הרשומות הראשונות.

# find / -type f -printf "\n%Ab %p" | head -n 11

Dec /usr/lib/nvidia/pre-install
Dec /usr/lib/libcpufreq.so.0.0.0
Apr /usr/lib/libchromeXvMCPro.so.1.0.0
Apr /usr/lib/libt1.so.5.1.2
Apr /usr/lib/libchromeXvMC.so.1.0.0
Apr /usr/lib/libcdr-0.0.so.0.0.15
Dec /usr/lib/msttcorefonts/update-ms-fonts
Nov /usr/lib/ldscripts/elf32_x86_64.xr
Nov /usr/lib/ldscripts/elf_i386.xbn
Nov /usr/lib/ldscripts/i386linux.xn

הפקודה למטה ממיינת את הפלט באמצעות המפתח כשדה ראשון, כפי שצוין על ידי '-k1' ולאחר מכן היא ממיינת לפי חודש כפי שצוין על ידי 'M' לפניו.

# find / -type f -printf "\n%Ab %p" | head -n 11 | sort -k1M

Apr /usr/lib/libcdr-0.0.so.0.0.15
Apr /usr/lib/libchromeXvMCPro.so.1.0.0
Apr /usr/lib/libchromeXvMC.so.1.0.0
Apr /usr/lib/libt1.so.5.1.2
Nov /usr/lib/ldscripts/elf32_x86_64.xr
Nov /usr/lib/ldscripts/elf_i386.xbn
Nov /usr/lib/ldscripts/i386linux.xn
Dec /usr/lib/libcpufreq.so.0.0.0
Dec /usr/lib/msttcorefonts/update-ms-fonts
Dec /usr/lib/nvidia/pre-install

5. מיון קבצים על פי תאריך

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

# find / -type f -printf "\n%AD %AT %p" | head -n 11

12/08/15 11:30:38.0000000000 /usr/lib/nvidia/pre-install
12/07/15 10:34:45.2694776230 /usr/lib/libcpufreq.so.0.0.0
04/11/15 06:08:34.9819910430 /usr/lib/libchromeXvMCPro.so.1.0.0
04/11/15 06:08:34.9939910430 /usr/lib/libt1.so.5.1.2
04/11/15 06:08:35.0099910420 /usr/lib/libchromeXvMC.so.1.0.0
04/11/15 06:08:35.0099910420 /usr/lib/libcdr-0.0.so.0.0.15
12/18/15 11:19:25.2656728990 /usr/lib/msttcorefonts/update-ms-fonts
11/12/15 12:56:34.0000000000 /usr/lib/ldscripts/elf32_x86_64.xr
11/12/15 12:56:34.0000000000 /usr/lib/ldscripts/elf_i386.xbn
11/12/15 12:56:34.0000000000 /usr/lib/ldscripts/i386linux.xn

פקודת המיון למטה ממיינת תחילה לפי ספרה האחרונה של השנה, לאחר מכן ממיינת לפי ספרה האחרונה של החודש בסדר הפוך ולבסוף ממיינת לפי שדה ראשון. כאן, ' 1.8 ' אומר 8 עמודה של שדה ראשון ו ‘n’ לפניו אומר מיון מספרי, בעוד ‘r’ מציין מיון בסדר הפוך.

# find / -type f -printf "\n%AD %AT %p" | head -n 11 | sort -k1.8n -k1.1nr -k1

12/07/15 10:34:45.2694776230 /usr/lib/libcpufreq.so.0.0.0
12/08/15 11:30:38.0000000000 /usr/lib/nvidia/pre-install
12/18/15 11:19:25.2656728990 /usr/lib/msttcorefonts/update-ms-fonts
11/12/15 12:56:34.0000000000 /usr/lib/ldscripts/elf32_x86_64.xr
11/12/15 12:56:34.0000000000 /usr/lib/ldscripts/elf_i386.xbn
11/12/15 12:56:34.0000000000 /usr/lib/ldscripts/i386linux.xn
04/11/15 06:08:34.9819910430 /usr/lib/libchromeXvMCPro.so.1.0.0
04/11/15 06:08:34.9939910430 /usr/lib/libt1.so.5.1.2
04/11/15 06:08:35.0099910420 /usr/lib/libcdr-0.0.so.0.0.15
04/11/15 06:08:35.0099910420 /usr/lib/libchromeXvMC.so.1.0.0

6. מיון קבצים על פי שעה

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

# find / -type f -printf "\n%AT %p" | head -n 11

11:30:38.0000000000 /usr/lib/nvidia/pre-install
10:34:45.2694776230 /usr/lib/libcpufreq.so.0.0.0
06:08:34.9819910430 /usr/lib/libchromeXvMCPro.so.1.0.0
06:08:34.9939910430 /usr/lib/libt1.so.5.1.2
06:08:35.0099910420 /usr/lib/libchromeXvMC.so.1.0.0
06:08:35.0099910420 /usr/lib/libcdr-0.0.so.0.0.15
11:19:25.2656728990 /usr/lib/msttcorefonts/update-ms-fonts
12:56:34.0000000000 /usr/lib/ldscripts/elf32_x86_64.xr
12:56:34.0000000000 /usr/lib/ldscripts/elf_i386.xbn
12:56:34.0000000000 /usr/lib/ldscripts/i386linux.xn

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

# find / -type f -printf "\n%AT %p" | head -n 11 | sort -k1.1n

06:08:34.9819910430 /usr/lib/libchromeXvMCPro.so.1.0.0
06:08:34.9939910430 /usr/lib/libt1.so.5.1.2
06:08:35.0099910420 /usr/lib/libcdr-0.0.so.0.0.15
06:08:35.0099910420 /usr/lib/libchromeXvMC.so.1.0.0
10:34:45.2694776230 /usr/lib/libcpufreq.so.0.0.0
11:19:25.2656728990 /usr/lib/msttcorefonts/update-ms-fonts
11:30:38.0000000000 /usr/lib/nvidia/pre-install
12:56:34.0000000000 /usr/lib/ldscripts/elf32_x86_64.xr
12:56:34.0000000000 /usr/lib/ldscripts/elf_i386.xbn
12:56:34.0000000000 /usr/lib/ldscripts/i386linux.xn

7. מיון הפלט של ls -l בהתבסס על תאריך

פקודה זו ממיינת את תוצאת הפקודה 'ls -l' בהתבסס על השדה השישי לפי חודש, ואז לפי השדה השבעי שהוא תאריך, באופן מספרי.

# ls -l | sort -k6M -k7n

total 116
-rw-r--r-- 1 root root     0 Oct  1 19:51 backup.tgz
drwxr-xr-x 2 root root  4096 Oct  7 15:27 Desktop
-rw-r--r-- 1 root root 15853 Oct  7 15:19 powertop_report.csv
-rw-r--r-- 1 root root 79112 Oct  7 15:25 powertop.html
-rw-r--r-- 1 root root     0 Oct 16 15:26 file3
-rw-r--r-- 1 root root    13 Oct 16 15:17 B
-rw-r--r-- 1 root root    21 Oct 16 15:16 A
-rw-r--r-- 1 root root    64 Oct 16 15:38 C

מסקנה

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

Source:
https://www.tecmint.com/find-and-sort-files-modification-date-and-time-in-linux/