שטח מדריך מקונן & היררכיית קבצים משורת הפקודה של Mac OS X
האם אי פעם היית צריך לשטח מבנה ספריות, להעביר את כל תוכן הקבצים מתיקיות ילד של ספריות לתיקיה אחת? בעוד שאתה יכול לעשות זאת באופן ידני על ידי מעבר בין קבצים ותיקיות ממערכת הקבצים של Mac OS X או Linux, אפשרות מהירה יותר היא לפנות לשורת הפקודה. אולי בשלב מסוים יצרת היררכיה מקוננת של ספריות שעליך לבטל כעת על ידי העברת כל הקבצים מהתיקיות המקוננות האלה וחזרה לספרייה אחת, או אולי אתה מחפש לפשט מבנה ספריות, לא משנה מה הסיבה, זה טריק עובד די טוב.
שימוש בשורת הפקודה כדי לבצע שיטוח של קבצים ומבני ספריות שמור ללא ספק למשתמשים מתקדמים שנוח להם להשתמש במסוף באופן כללי, אם זה לא מתאר אותך, שקול לעשות זאת באופן ידני דרך Finder , או שימוש באפליקציית Mac Automator כדי לבצע אוטומציה דומה של פעילויות מערכת הקבצים. עם זאת, אנו מתמקדים בהשטחת ספריות משורת הפקודה כאן.
דוגמה להשטחת ספריית קבצים מקוננת
כדי להבין טוב יותר מה אנחנו מנסים להשיג, ניקח לדוגמה מבנה ספריות דמיוני בשם TestDirectory הממוקם בתיקיית הבית של המשתמש. בדוגמה זו, TestDirectory מכיל תיקיות משנה כמו SubDirectory1, SubDirectory2, SubDirectory3 וכו', כל אחת עם קבצים בתיקיות המתאימות. מה שאנחנו מחפשים לעשות כאן הוא לשטוח את מבנה הספריות, להעביר את כל הקבצים מ-SubDirectory(X) לספריית האב "TestDirectory".הספרייה הראשונית והתוכן המוצגים באופן רקורסיבי עם ה- יכולים להיראות בערך כך:
$ find ~/TestDirectory/ -type f ~/TestDirectory/rooty.jpg ~/TestDirectory/SampleDirectory1/beta-tool-preview.jpg ~/TestDirectory/SampleDirectory1 /alphabeta-tool.jpg ~/TestDirectory/SampleDirectory2/test-tools.jpg ~/TestDirectory/SampleDirectory3/test-png.jpg ~/TestDirectory/SampleDirectory3/test1.jpg ~/TestDirectory/3/Sample2Directory
כדי לשטח את תוכן הספרייה וספריית המשנה חזרה לתיקיית TestDirectory, תשתמש במחרוזת הפקודה הבאה:
find TargetDirectory/ -mindepth 2 -type f -exec mv -i '{}' TargetDirectory/ ';'
לאחר שיטוח תוכן הספרייה, הוא אמור להיראות כך כשהוא רשום:
~/TestDirectory/rooty.jpg ~/TestDirectory/beta-tool-preview.jpg ~/TestDirectory/alphabeta-tool.jpg ~/TestDirectory/test-tools .jpg ~/TestDirectory/test-png.jpg ~/TestDirectory/test1.jpg ~/TestDirectory/test2.jpg
שים לב שספריות המשנה עדיין יהיו קיימות, הן פשוט יהיו ריקות. הגיוני? אם לא, או אם זה לא מדגים את מה שאתה רוצה להשיג, אתה כנראה לא רוצה לשטח ספרייה בכלל, אולי אתה מחפש למזג או להשתמש בדין כדי לעשות עותק מורכב למקום אחר.
שיטוח מבנה ספריות והיררכיית קבצים מקוננים עם שורת הפקודה
מוכן להמשיך? מחרוזת הפקודה שבה אנו הולכים להשתמש כדי לשטח מבנה ספריות ולהעביר את כל הקבצים מספריית המשנה לבסיס ספריית היעד היא כדלקמן:
find -mindepth 2 -type f -exec mv -i '{}' ';'
החלף בספרייה לבחירתך לשטח, כפי שהוצג בדוגמה למעלה.
כן, הספרייה מופיעה פעמיים במחרוזת הפקודה, בפעם הראשונה היא מחפשת את הספרייה כדי לשטח את ספריות המשנה שלהן, ובפעם השנייה כיעד לפריטים שנמצאו.
דייק עם היעד שצוין, כי זה לא הפיך (טוב, לפחות בלי הרבה עבודה ידנית מצידך), אז עשה זאת רק אם אתה בטוח לחלוטין שאתה רוצה לעבור דירה כל הקבצים בספריות היעד בספריות הילד בחזרה לתיקיית השורש של היעד.
כפי שהוזכר קודם, אתה יכול לעשות זאת גם ב-Finder של OS X, או לפחות לצפות בשינויים בקבצים ובתיקיות ב-Finder. Option+לחיצה על החצים הקטנים בתצוגת הרשימה פותחת את כל ספריות המשנה, ומציגה את היררכיית התיקיות כך:
לאחר התעסקות עם מגוון חלופות bash ו-zsh, הטריק השימושי הזה הושאר על ידי מגיב ב-StackExcange ובסופו של דבר זו הייתה השיטה הקלה והתואמת ביותר. אם אתם מכירים דרך טובה יותר לשטח ספרייה מקוננת, ספרו לנו בתגובות!