먼저 미리 사과해야겠습니다. Mac 터미널과 관련해 제가 무엇을 하고 있는지 전혀 모르겠습니다...
디렉터리/폴더에 있는 모든 파일의 인벤토리를 수행해야 합니다. 여러 하위 디렉터리/폴더가 있고 하위 디렉터리/폴더 등도 있습니다.
다음을 포함하는 각 파일에 대해 한 줄을 얻을 수 있기를 원합니다.
- DirectoryName1\DirectoryName2\DirectoryName3 등과 같은 경로입니다.
- 확장자를 포함한 파일 이름(예: .docx, .xlsx 등)
- 생성일(일/월/년)
- 마지막 수정 날짜(일/월/년)
- 파일 크기(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 stat
1] 터미널에서 찾으세요. 다음은 표시되는 내용을 간략하게 살펴보겠습니다.
.
위 명령을 실행했을 때 있었던 현재 작업 디렉터리를 가리킵니다. 탐색할 트리가 있는 디렉터리가 아닌 다른 디렉터리에서 명령을 실행하는 경우 해당 디렉터리를 정규화된 디렉터리 경로로 변경할 수 있습니다.- 발견된 각 파일에 대해
-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.out
cmd가 다시 실행될 때마다 출력 파일이 다시 작성됩니다. 이를 방지하려면 매번 이름을 변경하세요.