현재 디렉터리의 파일 메타데이터를 다음 형식으로 표시해야 합니다.
첫 번째 열은 왼쪽 정렬되어야 하고, 두 번째 열은 중앙 정렬되어야 하며, 세 번째 열은 터미널 화면 오른쪽 끝에 오른쪽 정렬되어야 합니다.
답변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
(또는 ls
ksh93의 내장 기능이 내장된 경우)을 사용하세요.
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