우선, 이것은 다음과 중복되지 않습니다.Linux ls는 파일 이름 날짜와 크기만 표시합니다.
실제 디렉토리 이름을 추가로 인쇄하고 싶기 때문입니다.
나는 항상 다음 명령을 사용합니다.
ls -l | awk '{print $5, $9}'
각 파일의 크기와 이름을 가져옵니다.
하지만 이제는 파일 디렉터리를 추가로 인쇄해야 합니다. 현재 디렉토리가 이면 다음을 /path/to/somewhere
원합니다.
somewhere/file 1234
somewhere/other-file 4567
그리고 뿐만 아니라
file 1234
other-file 4567
그게 가능합니까?
답변1
각 파일 이름 앞에 현재 디렉터리를 추가한다는 뜻인가요?
ls -l | awk '{printf("%s %s/%s\n", $5, ENVIRON["PWD"], $9); }'
아니면 다른 것입니까?
좋아요,확실히당신이 원하는 것은
$ cd /some/path/to/somewhere
$ <insert command here>
somewhere/file1 size1
somewhere/file2 size2
...
예저것옳은?
그렇다면 (POSIX 쉘을 가정하여) 필요한 변경 사항은 다음과 같습니다.
ls -l | DIR=${PWD##*/} awk '{printf("%s/%s %s\n", ENVIRON["DIR"], $9, $5); }'
대신에.
에서는 오류가 사용 중임을 나타내 tcsh
므로 다음을 사용합니다.Illegal variable name
ls -l | env DIR=$PWD:t:q awk '{printf("%s/%s %s\n", ENVIRON["DIR"], $9, $5); }'
대신에.
그 경우아직작동하지 않습니다. 질문에 플랫폼, 셸, awk 버전 등을 설명해 주세요. 댓글 스레드가 너무 길어져서 추측할 수 있는 내용이 부족합니다. :-)
답변2
"ls 출력을 구문 분석하지 않음"이라는 정신으로 ?를 사용하지 않는 이유는 무엇입니까 find
?
find . -mindepth 1 -maxdepth 1 -printf '%p\t%s\n'
(이것은 확장자가 GNU라고 가정합니다 find
. -printf
)
파일의 전체 경로가 필요한 경우 다음 .
으로 바꾸십시오 "$PWD"
(또는 $PWD:q
사용된 경우). tcsh
대조적으로 ls
숨겨진 파일이 포함되어 있으며 파일 목록을 정렬하지 않습니다.
답변3
$ du -b
사람이 읽을 수 있는 크기의 경우:
$ du -bh
답변4
나는 당신이 필요하다고 생각합니다 ls
:
ls -sh1 /var/log/mysql/*
0 /var/log/mysql/mysqld.log
4.0K /var/log/mysql/mysqld.log-20140718
4.0K /var/log/mysql/mysqld.log-20140827
4.0K /var/log/mysql/mysqld.log-20140829
-s
각 파일의 인쇄 크기-h
사람이 읽을 수 있는 크기로 인쇄-1
각 파일을 새 줄에 인쇄*
와일드카드 와일드카드는 전체 경로의 인쇄를 "활성화"합니다.- 선택사항:
-S
크기별로 정렬 - 선택사항:
-t
시간순으로 정렬