'찾기'를 사용하여 하드 디스크의 모든 파일을 나열하는 방법은 무엇입니까?

'찾기'를 사용하여 하드 디스크의 모든 파일을 나열하는 방법은 무엇입니까?

크기, 마지막 수정 날짜, 절대 경로를 포함하여 HDD에 있는 모든 파일을 나열하고 싶습니다.

아이디어 형식:

[file size] [last modified date] [absolute path] [ filename] 

나는 시도했다:

ls -lhR | awk -v PWD=$PWD '{printf("%4s %4s %2s %5s %s/%s\n", $5, $6, $7, $8, PWD, $9); }' >> /tmp/report.list 

사이에 공간이 있는 일부 파일/디렉토리에 도달할 때까지 완벽하게 작동했습니다.... 그래서 다음을 시도했습니다.

find . -name "*" -exec du -sh {} \; -exec date -r {} \; -exec echo " " \; >> /tmp/report.list

그러나 출력은 2줄이 아닌 3줄로 퍼져 있는 것으로 보이며, 인쇄된 경로도 파일의 절대 경로가 아닙니다.

어떻게 해야 하나요?

답변1

find-printf작업을 사용하여 해당 속성을 직접 출력 할 수 있습니다 . 예:

find "$PWD" -printf '%s\t%Tx\t%h\t%P\n'
  • %s: 파일 크기(바이트)입니다.
  • %Tx: 파일의 마지막 수정 시간(로케일 날짜 표현)
  • %h: 파일명의 선두 디렉터리
  • %P: 파일이 발견된 명령줄 인수의 이름과 함께 파일 이름이 제거되었습니다.

디렉터리 경로( %h)는 명령이 호출되는 명령줄 경로 인수를 기준으로 인쇄됩니다 find. 를 사용하여 작업 디렉터리를 지정하면 $PWD절대 경로가 됩니다.

답변2

-printf찾기에서 옵션을 사용할 수 있습니다 .

find / -type "f" -printf "%s\t%TY-%Tm-%Td\t%p\n" > file.txt

그러면 다음 형식의 파일이 만들어집니다.

[크기(바이트)]TAB[YYYY-mm-dd 형식의 마지막 수정 날짜]TAB[FULLPATH]

전체 파일 구조에서 실행됩니다.

\t탭으로 구분하지 않으려면 각각을 공백으로 바꾸십시오 . 를 사용하면 의 옵션 man find에 대한 다른 형식 옵션을 찾을 수 있습니다 .-printffind

관련 정보