विश्वसनीयता के बारे में एक नोट:
चूंकि न्यूलाइन वर्ण फ़ाइल नाम में किसी भी तरह मान्य है, कोई भी समाधान जो / आधारित लोगों की तरह लाइनों पर निर्भर है, त्रुटिपूर्ण हैं।head
tail
GNU के साथ ls
, --quoting-style=shell-always
विकल्प और bash
सरणी का उपयोग करने के लिए एक और विकल्प है :
eval "files=($(ls -t --quoting-style=shell-always))"
((${#files[@]} > 0)) && printf '%s\n' "${files[0]}"
( यदि आप छिपी हुई फाइलों पर भी विचार करना चाहते हैं तो -A
विकल्प जोड़ें ls
)।
यदि आप नियमित फाइलों (डिसॉर्डर्ड डाइरेक्टरीज़, फ़ोरोस, डिवाइसेस, सिमिलिंक, सॉकेट ...) को सीमित करना चाहते हैं, तो आपको GNU का सहारा लेना होगा find
।
बश 4.4 या नए (के लिए readarray -d
) और GNU कोर्यूटिल्स 8.25 या नए (के लिए cut -z
) के साथ:
readarray -t -d '' files < <(
LC_ALL=C find . -maxdepth 1 -type f ! -name '.*' -printf '%T@/%f\0' |
sort -rzn | cut -zd/ -f2)
((${#files[@]} > 0)) && printf '%s\n' "${files[0]}"
या पुनरावर्ती:
readarray -t -d '' files < <(
LC_ALL=C find . -name . -o -name '.*' -prune -o -type f -printf '%T@%p\0' |
sort -rzn | cut -zd/ -f2-)
सबसे अच्छा है कि इस परेशानी से बचने zsh
के bash
लिए इसका उपयोग और इसके शानदार क्वालिफायर का उपयोग किया जाए :
वर्तमान निर्देशिका में नवीनतम नियमित फ़ाइल:
printf '%s\n' *(.om[1])
छिपे हुए सहित:
printf '%s\n' *(D.om[1])
दूसरा सबसे नया:
printf '%s\n' *(.om[2])
सिमलिंक रिज़ॉल्यूशन के बाद फ़ाइल की आयु जांचें:
printf '%s\n' *(-.om[1])
रिकर्सिवली:
printf '%s\n' **/*(.om[1])
इसके अलावा, पूर्ण होने वाली प्रणाली ( compinit
और सह) सक्षम होने के साथ , Ctrl+Xmएक कंपाइलर बन जाता है जो नवीनतम फ़ाइल में फैलता है।
इसलिए:
vi Ctrl+Xm
क्या आप नवीनतम फ़ाइल को संपादित करेंगे (आपको प्रेस करने से पहले यह देखने का भी मौका मिलेगा Return)।
vi Alt+2Ctrl+Xm
दूसरी-नई फ़ाइल के लिए।
vi * .सीCtrl+Xm
नवीनतम c
फ़ाइल के लिए।
vi * (?)Ctrl+Xm
नवीनतम नियमित फ़ाइल के लिए (निर्देशिका नहीं, और न ही फिफो / डिवाइस ...), और इसी तरह।
watch -n1 'ls -Art | tail -n 1'
- बहुत ही अंतिम फाइलों को दिखाता है