파일 세부 정보(예: 크기, 생성 날짜, 수정 날짜, 마지막으로 연 날짜)를 포함하여 디렉터리 및 모든 하위 디렉터리의 내용을 나열합니다.

파일 세부 정보(예: 크기, 생성 날짜, 수정 날짜, 마지막으로 연 날짜)를 포함하여 디렉터리 및 모든 하위 디렉터리의 내용을 나열합니다.

먼저 미리 사과해야겠습니다. Mac 터미널과 관련해 제가 무엇을 하고 있는지 전혀 모르겠습니다...

디렉터리/폴더에 있는 모든 파일의 인벤토리를 수행해야 합니다. 여러 하위 디렉터리/폴더가 있고 하위 디렉터리/폴더 등도 있습니다.

다음을 포함하는 각 파일에 대해 한 줄을 얻을 수 있기를 원합니다.

  1. DirectoryName1\DirectoryName2\DirectoryName3 등과 같은 경로입니다.
  2. 확장자를 포함한 파일 이름(예: .docx, .xlsx 등)
  3. 생성일(일/월/년)
  4. 마지막 수정 날짜(일/월/년)
  5. 파일 크기(KB)

그런 다음 결과를 복사하여 스프레드시트에 붙여넣고 스프레드시트에서 가져올 수 있습니다.

나는 ls 및 find 명령을 시도했는데 각각 필요한 것의 일부를 제공하지만 두 출력 모두를 제공하지는 않습니다(많은 수동 조합 없이). 각 명령에 printf 명령을 사용해 보았으나 오류 메시지에 따르면 뭔가 빠진 것이 분명합니다.

이를 수행할 수 있는 방법이 있습니까?

티아,

답변1

macOS 또는 OSX의 기본 셸이 무엇인지는 확실하지 않지만 stat유틸리티를 사용할 수 있거나(있어야 함) 설치할 수 있는 경우 다음을 수행할 수 있습니다.

$ find . -exec stat -c "%n,%w,%y,%s" {} \;  # on Arch linux
$ find . -exec stat -t "%F %T" -f "%N,%B,%m,%z" {} \;  # on macOS, OSX

CSV 출력 예:

./.bash_history,2020-07-05 19:27:36.691875334 +0200,2020-07-05 19:27:36.691875334 +0200,54669
./.gitignore_global,2018-03-03 14:22:52.298262296 +0100,2018-03-03 14:22:52.298262296 +0100,423
...

이 내용이 처음이라면 다음을 입력하는 것이 좋습니다 man find .man stat1] 터미널에서 찾으세요. 다음은 표시되는 내용을 간략하게 살펴보겠습니다.

  • .위 명령을 실행했을 때 있었던 현재 작업 디렉터리를 가리킵니다. 탐색할 트리가 있는 디렉터리가 아닌 다른 디렉터리에서 명령을 실행하는 경우 해당 디렉터리를 정규화된 디렉터리 경로로 변경할 수 있습니다.
  • 발견된 각 파일에 대해 -exec다음 출력 형식으로 cmd를 실행( 표시)합니다.stat

아치 리눅스에서:

  • %n정규화된 파일 이름(파일 경로 + 파일 기본 이름),
  • %w사람이 읽을 수 있는 파일 생성 시간으로, YYYY-MM-DD HH:MM:SS +/-hhmm 시스템의 숫자 시간대로 형식이 지정되며 +hhmm또는 로 표시됩니다 -hhmm. 소수 초를 포함하여,
  • %y파일 데이터가 마지막으로 수정된 사람이 읽을 수 있는 시간으로, 이전과 동일한 형식입니다.
  • %s총 파일 크기(바이트)입니다.

macOS 또는 OSX에서는 stat구현이 GNU 중심 플랫폼과 다릅니다. 이 답변을 얻기 위해 macOS에서는 형식을 테스트할 수 없었지만 원칙적으로 올바른 옵션은 다음과 같습니다.

  • %N파일 이름,
  • %B파일 생성 시간, 날짜 및 시간 형식은 위와 같으며 숫자 시간대는 제외되며,
  • %m파일이 마지막으로 수정된 시간입니다 %B. 형식은 다음과 같습니다.
  • %z총 파일 크기.

결과 사후 처리를 위해 이 출력을 유지하려면 다음과 같이 cmd에 대한 출력 리디렉션을 포함합니다.

$ find . -exec stat -t "%F %T" -f "%N,%B,%m,%z" {} \; > stat.out # on macOS or OSX

.csv 파일에서 직접 CSV 출력 파일을 열 수 있습니다 LibreOffice Calc. 그러나 기본 Excel 형식으로 출력을 생성하려면 perl또는 를 사용하는 것이 좋습니다 python.

stat.outcmd가 다시 실행될 때마다 출력 파일이 다시 작성됩니다. 이를 방지하려면 매번 이름을 변경하세요.

관련 정보