/ / पिछले 7 दिनों में बनाई गई फ़ाइलों को छोड़कर उस निर्देशिका में स्थान कितना है, यह जानने के लिए कमांड करें। `Find` का उपयोग किए बिना - linux, awk

पिछले 7 दिनों में बनाई गई फ़ाइलों को छोड़कर उस निर्देशिका में स्थान कितना है, यह जानने के लिए कमांड करें। `Find` का उपयोग किए बिना - linux, awk

विशेषाधिकार प्राप्त करने के लिए मुझे सिस्टम तक उचित पहुँच नहीं है find आज्ञा। इसलिए मैं संभवतः उपयोग करने वाले आदेशों की एक स्ट्रिंग प्राप्त करने का प्रयास कर रहा हूं grep या awk या कुछ भी जो मुझे उन फाइलों को सूचीबद्ध कर सकता है जो पिछले 7 दिनों के भीतर नहीं बनाई गई हैं और वे कितनी जगह ले रही हैं।

मैं यह आज्ञा लेकर आया था du -h | grep ^[0-9.]*G अब मुझे यह जानना होगा कि मैं कैसे सूची बना सकता हूं जो एक बार 7 दिन से अधिक पुरानी हो जाती है।

उपरोक्त कमांड का आउटपुट है:

du: cannot read directory `./lost+found": Permission denied
1.5G    ./portal/portal-internal-crons/get_portal_logs/p3-proxy1.extranet.akamai.com
1.5G    ./portal/portal-internal-crons/get_portal_logs/p3-proxy2.extranet.akamai.com
1.5G    ./portal/portal-internal-crons/get_portal_logs/p3-proxy5.extranet.akamai.com
1.5G    ./portal/portal-internal-crons/get_portal_logs/p3-proxy6.extranet.akamai.com
1.1G    ./portal/portal-internal-crons/get_portal_logs/p3-sp01.extranet.akamai.com
1.2G    ./portal/portal-internal-crons/get_portal_logs/p3-sp02.extranet.akamai.com
1.5G    ./portal/portal-internal-crons/get_portal_logs/p3-proxy7.extranet.akamai.com
1.5G    ./portal/portal-internal-crons/get_portal_logs/p3-proxy8.extranet.akamai.com
1.1G    ./portal/portal-internal-crons/get_portal_logs/p3-sp03.extranet.akamai.com
1.1G    ./portal/portal-internal-crons/get_portal_logs/p3-sp04.extranet.akamai.com
1.5G    ./portal/portal-internal-crons/get_portal_logs/p3-proxy3.extranet.akamai.com
1.5G    ./portal/portal-internal-crons/get_portal_logs/p3-proxy4.extranet.akamai.com
18G ./portal/portal-internal-crons/get_portal_logs
18G ./portal/portal-internal-crons
18G ./portal
19G .

उत्तर:

उत्तर № 1 के लिए 1

मामले में आप चला सकते हैं ls -lR --time-style=+%s लक्ष्य पर, आप कर सकते हैं:

ls -lR --time-style=+%s | awk -v now=$(date +%s) "/^-/ && now - $6 > 7*24*3600 {s += $5} END {print s}"

स्पष्टीकरण: ls -lR --time-style=+%s इस तरह का आउटपुट तैयार करता है:

.:
total 7168
drwxr-xr-x 2 john doe    4096 1439992030 dira
drwxr-xr-x 2 john doe    4096 1441870671 dirb
-rw-r--r-- 1 john doe   43980 1436264423 filea
-rw-r--r-- 1 john doe   15941 1436264418 fileb
-rw------- 1 john doe 7193171 1439374938 filec
-rw-r--r-- 1 john doe    2927 1436264418 filed

./dira:
total 8
-rw-r--r-- 1 john doe 1205 1439991207 filea
-rw-r--r-- 1 john doe  142 1439990672 fileb

./dirb:
total 4
-rw-r--r-- 1 john doe 116 1441870658 filea

जहां अंतिम संशोधन की तारीख सेकंड में टाइमस्टैम्प है। awk कोड फ़ाइलों के साथ संगत लाइनों का चयन करता है (पहला क्षेत्र जिसके साथ शुरू होता है -) जो टाइमस्टैम्प अतीत में 7 दिनों से अधिक है।यह चयनित लाइनों के आकार (क्षेत्र संख्या 5) को जमा करता है और अंत में योग प्रिंट करता है। एक फ़ाइल की आयु वर्तमान टाइमस्टैम्प के बीच अंतर के रूप में गणना की जाती है (awk परिवर्तनशील now) और फ़ाइल का टाइमस्टैम्प (क्षेत्र संख्या 6)। वर्तमान टाइमस्टैम्प को पारित कर दिया गया है awk परिवर्तनशील के रूप में now उसके साथ -v now=$(date +%s) विकल्प.