수정된 시간의 긴 목록 표시

수정된 시간의 긴 목록 표시

ls절대 날짜-시간 대신 수정 후 시간(또는 일)을 나타내는 숫자인 수정 시간을 표시하는 옵션(GNU 및/또는 FreeBSD 옵션 선호)이 있습니까 ?

답변1

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 시간 단위 전" 문자열을 인쇄합니다. 이 기능은 구체적으로 보고 싶은 내용에 따라 향상될 수 있습니다.

관련 정보