파일이 파일시스템을 넘나들면서 메타데이터를 잃어버리는 일이 종종 있다.
사진 이미지나 음성 녹음 파일과 같은 경우에는만들어진 시간이 중요한 정보일 수 있다.
그래서 파일이름 자체에 파일 시간을 넣어두면 유용할 수 있다.
1. 파일 생성 시간 가져오기
mac 에서는 파일 만들어진 시간을 가져오기 위해 mdls라는 명령을 이용할 수 있다.
이 명령은 BSD General Commands 이기 때문에 BSD 시스템에서 가능하다.
우선 터미널에서 달랑 명령을 쓰게 되면 아래와 같이 파일 이름이 주어지지 않았다고 나온다.
➜ ~ mdls
(null): no filename specified!
usage: mdls [-name attr] [-raw [-nullMarker markerString]] [-plist file] path
list the values of one or all the attributes of the specified file
-raw: don't print attribute names before values
-nullMarker: substitute this string for null attributes in raw mode
-plist: output attributes in XML format to file. Use - to write to stdout
option -plist is incompatible with options -raw, -nullMarker, and -name
example: mdls ~/Pictures/Birthday.jpg
example: mdls -name Keyword ~/Pictures/Birthday.jpg
touch 명령으로 파일을 만들어서 수행해보았다.
➜ ~ touch test.txt
➜ ~ mdls test.txt
_kMDItemOwnerUserID = 501
kMDItemContentCreationDate = 2017-05-02 02:01:06 +0000
kMDItemContentModificationDate = 2017-05-02 02:01:06 +0000
kMDItemContentType = "public.plain-text"
kMDItemContentTypeTree = (
"public.plain-text",
"public.text",
"public.data",
"public.item",
"public.content"
)
kMDItemDateAdded = 2017-05-02 02:01:06 +0000
kMDItemDisplayName = "test.txt"
kMDItemFSContentChangeDate = 2017-05-02 02:01:06 +0000
kMDItemFSCreationDate = 2017-05-02 02:01:06 +0000
kMDItemFSCreatorCode = ""
kMDItemFSFinderFlags = 0
kMDItemFSHasCustomIcon = (null)
kMDItemFSInvisible = 0
kMDItemFSIsExtensionHidden = 0
kMDItemFSIsStationery = (null)
kMDItemFSLabel = 0
kMDItemFSName = "test.txt"
kMDItemFSNodeCount = (null)
kMDItemFSOwnerGroupID = 20
kMDItemFSOwnerUserID = 501
kMDItemFSSize = 0
kMDItemFSTypeCode = ""
kMDItemKind = "일반 텍스트 도큐멘트"
kMDItemLogicalSize = 0
kMDItemPhysicalSize = 0
여기서 시간으로 쓰기에 적당한 필드는 kMDItemDateAdded 이다.
속성중에 특정 필드만 뽑아보기 위해서는 옵션 -name 과 속성 이름을 붙이면 된다.
➜ ~ mdls -name kMDItemDateAdded test.txt
kMDItemDateAdded = 2017-05-02 02:01:06 +0000
문제는 뒤에 +0000 도 있듯이 시간대가 GMT+0이다.
한국은 GMT+09인데 말이다.
그래서 다른 방법은 stat 명령을 이용하는 방법이다.
➜ ~ stat -f "%Sm" -t "%Y-%m-%d_%H.%M.%S" test.txt
2017-05-02_11.01.06
이번엔 로컬시간이 나온다. 훨씬 보기가 좋다.
원래. 시간 단위의 구분자로는 ISO 8601에서는 콜론(:)만을 허용한다. 하지만 파일 시스템에서는 콜론을 파일명으로 허용하지 않기 때문에 마침표(.)로 대신 한 것이다.
2. 파일 리스팅하기.
ls 명령이 있지만 이것은 말단 디렉토리가 아닐 경우 파일 이외에 디렉토리도 리스팅을 한다.
그래서 find 명령을 쓰기로 한다.
➜ ~ find . -maxdepth 1 -type f
./.bash_history
./.CFUserTextEncoding
./.DS_Store
...
문제는 DS_Store 같은 숨김파일도 같이 나온다는 것이다.
➜ ~ find . -maxdepth 1 -type f -not -path '*/\.*'
./04-14 16.16.pklg
./clientlist.txt
./epoch.js
./fastoredis.log
./java_error_in_idea.hprof
./java_error_in_idea_639.log
./test.txt
./withdash.js
이제 앞에서 ./만 지우면 된다.
이것은 TR(translate characters)명령, 즉 tr -d './' 을 사용하면 된다.
파이프로 연결하면 된다.
➜ ~ find . -maxdepth 1 -type f -not -path '*/\.*' | tr -d './'
04-14 1616pklg
clientlisttxt
epochjs
fastoredislog
java_error_in_ideahprof
java_error_in_idea_639log
testtxt
withdashjs
참고:
https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man1/mdls.1.html
https://discussions.apple.com/thread/7119394?tstart=0
http://stackoverflow.com/questions/12169710/formatted-modified-date-time-on-mac-bash
http://stackoverflow.com/questions/27725408/alternative-to-colon-in-a-time-format
https://askubuntu.com/questions/266179/how-to-exclude-ignore-hidden-files-and-directories-in-a-wildcard-embedded-find
'OS > Mac OS X' 카테고리의 다른 글
스크린 캡쳐 기본 이름 변경하기 (0) | 2018.03.02 |
---|---|
mac book pro 주변광 센서는 어디에?? (0) | 2018.02.09 |
OSX의 유니코드 (0) | 2017.01.10 |
여러 잠김 파일 풀기 (0) | 2017.01.08 |
OS X 부팅시 검정 스크린에서 멈추는 현상 (0) | 2017.01.08 |