형식이 지정된 열에 파일 메타데이터 표시

형식이 지정된 열에 파일 메타데이터 표시

현재 디렉터리의 파일 메타데이터를 다음 형식으로 표시해야 합니다.

첫 번째 열은 왼쪽 정렬되어야 하고, 두 번째 열은 중앙 정렬되어야 하며, 세 번째 열은 터미널 화면 오른쪽 끝에 오른쪽 정렬되어야 합니다.

답변1

GNU 사용 ( 시스템에서 사용 find가능 ):gfind

find . -mindepth 1 -maxdepth 1 -printf '%-58P %TF %AF\n'

파일 이름, 마지막 수정 날짜(원하는 경우 파일 콘텐츠 생성 날짜) 및 마지막 액세스 날짜를 YYYY-mm-dd 형식으로 인쇄합니다.

지난 365일 동안 액세스하지 않은 파일로 제한하려면 다음을 수행하세요 .txt..bkp

find . -mindepth 1 -maxdepth 1 \
  \( -name '*.txt' -o -name '*.bkp' \) \
  -atime +364 -printf '%-58P %TF %AF\n'

파일 이름에 제어 문자, 멀티바이트 문자, 너비가 0인 문자 또는 이중 너비 문자가 포함되지 않고 58바이트를 초과하지 않는 한 열을 정렬해야 합니다.

첫 번째 열은 왼쪽 정렬되고, 세 번째 열은 오른쪽 정렬되며(터미널 너비가 80개 열이라고 가정), 두 번째 열은 파일 이름을 위한 공간을 확보하기 위해 오른쪽으로 이동됩니다. 파일 이름을 중앙에 배치하려면 파일 이름 너비와 간격을 조정하세요.

파일 목록은 정렬되지 않습니다.

ast-open ls(또는 lsksh93의 내장 기능이 내장된 경우)을 사용하세요.

ls -AZ '%-58(name)Ls %(mtime:%F)s %(atime:%F)s'

멀티바이트, 너비가 0인 문자, 너비가 2개인 문자의 정렬이 유지되고 목록이 정렬되어야 합니다.

그리고 zsh:

#! /bin/zsh -
zmodload zsh/stat
for f (*(DN)) {
  stat -LH s -F %F -- $f &&
    printf '%-58s %s %s\n' $f $s[mtime] $s[atime]
}

지난 365일 동안 액세스하지 않은 파일로 제한하려면 .txt로 바꾸세요..bkp*(DN)*.(txt|bkp)(DNa+364)

멀티바이트 문자 정렬은 유지되어야 하며 파일 이름은 정렬되어야 합니다.

평소와 같이 신뢰할 수 있는 방식으로 수정 및 액세스 시간을 검색하는 표준 명령이 없으므로 가장 좋은 옵션은 아마도 다음을 사용하는 것입니다 perl.

perl -MPOSIX -Mlocale -Mopen=locale -MEncode::Locale -MEncode -e '
  opendir D, "." || die "open .: $!\n";
  for (
    sort {$a->[1] cmp $b->[1]}
      map {[$_, decode(locale => $_)]}
      grep {!/^\.{1,2}\z/}
      readdir D
  ) {
    if (@s = lstat$_->[0]) {
      printf("%-58s %s %s\n", $_->[1],
        map {strftime("%Y-%m-%d", localtime $_)} ($s[9], $s[8]))
    } else {warn "$_: $!\n"}
  }'

zsh방법과 마찬가지로 멀티바이트 문자 정렬을 유지하고 로캘 조합에 따라 파일 이름을 정렬해야 합니다.

Solaris 10과 함께 제공되는 버전은 상당히 오래되었으므로 perl파일 이름에서 ASCII가 아닌 문자에 대한 지원을 중단해야 할 수도 있습니다. 이는 다음과 같이 단순화됩니다.

perl -MPOSIX -e '
  opendir D, "." || die "open .: $!\n";
  for (sort grep {!/^\.{1,2}\z/} readdir D) {
    if (@s = lstat$_) {
      printf("%-58s %s %s\n", $_,
        map {strftime("%Y-%m-%d", localtime $_)} ($s[9], $s[8]))
    } else {warn "$_: $!\n"}
  }'

지난 365일 동안 액세스하지 않은 파일로 제한하려면 .txt다음을 바꾸십시오 ..bkp!/^\.{1,2}\z//\.(txt|bkp)\z/ && -A > 365

관련 정보