Ls
長列表顯示修改後的小時數
是否有一個選項(最好是 GNU 和/或 FreeBSD 選項)指示
ls
顯示修改時間,而不是顯示修改時間,而不是顯示修改後的小時數(或天數)?
我不知道有一種方法可以
ls
做你想做的事。根據您要查找的內容,您可以建構一個展示該行為的腳本。除了這種行為之外,要讓所有的花里胡哨都有很多工作,但你可以很容易地得到這種行為*。*
ls
這是此類腳本的一個快速範例:
#!/bin/bash function age() { local -r last_modification="${1}" local -r now="$(date +%s)" local -r seconds="$((now - last_modification))" if [[ ${seconds} -lt 60 ]]; then printf "%s seconds ago" "${seconds}" return fi local -r minutes="$((seconds / 60))" if [[ ${minutes} -lt 60 ]]; then printf "%s minutes ago" "${minutes}" return fi local -r hours="$((minutes / 60))" if [[ ${hours} -lt 24 ]]; then printf "%s hours ago" "${hours}" return fi local -r days="$((hours / 24))" if [[ ${days} -lt 365 ]]; then printf "%s days ago" "${days}" return fi local -r years="$((days / 365))" printf "%s years ago" "${years}" } function list_file() { local -r target_file="${1}" local -r last_modification="$(stat --format=%Y "${target_file}")" stat --format="%A %2h %-8U %-8G %5s $(printf "%-14s" "$(age "${last_modification}")") %n" "${target_file}" } if [[ $# -eq 0 ]]; then for i in * .*; do list_file "${i}" done else for i; do list_file "${i}" done fi
這是一個範例執行:
$ myls -rw------- 1 user group 9061 3 days ago .bash_history -rw-r--r-- 1 user group 127 2 years ago .bash_logout -rw-r--r-- 1 user group 611 1 years ago .bashrc drwxr-xr-x 4 user group 4096 155 days ago .cache -rw------- 1 user group 40583 5 hours ago .histfile -rw------- 1 user group 703 1 minutes ago .lesshst ... $ $ myls myls -rwxr-xr-x 1 user group 1127 2 minutes ago myls $
如果你給腳本參數,那麼它會列出那些參數,否則它會列出目前目錄的內容。
它用於
stat
獲取ls
呈現的傳統欄位。它不顯示日期,而是使用該age
函式列印“友好的,x 單位時間前”字元串。該功能可以增強,具體取決於您希望看到的具體內容。