printf를 사용하여 "find"의 출력을 올바르게 표로 작성하고 날짜별로 정렬하세요.

printf를 사용하여 "find"의 출력을 올바르게 표로 작성하고 날짜별로 정렬하세요.

gfind텍스트 파일을 찾기 위해 MacOS에서 실행 중 입니다 .

gfind결과의 파일 이름과 생년월일을 확인한 다음 날짜별로 정렬하고 페이지를 매기려고합니다 . 이것이 가능합니까?

현재 나는 노력하고 있다gfind . -name "*.txt" -printf "%f \t\t %Bc\n"

그러나 결과는 다음과 같습니다.

todo.txt         Fri Mar  4 17:47:41 2022
99AC1EF5-6BE3-556B-8254-84A8764819E0.txt         Fri Mar  4 17:49:08 2022
chrome_shutdown_ms.txt       Fri Mar  4 17:48:07 2022
index.txt        Fri Mar  4 17:48:05 2022
index.txt        Fri Mar  4 17:48:05 2022
index.txt        Fri Mar  4 17:48:06 2022
index.txt        Fri Mar  4 17:47:46 2022
index.txt        Fri Mar  4 17:48:01 2022
index.txt        Fri Mar  4 17:48:01 2022
index.txt        Fri Mar  4 17:48:05 2022
index.txt        Fri Mar  4 17:48:05 2022
index.txt        Fri Mar  4 17:48:06 2022
index.txt        Fri Mar  4 17:48:06 2022
index.txt        Fri Mar  4 17:47:46 2022
index.txt        Fri Mar  4 17:48:06 2022
LICENSE.txt          Fri Mar  4 17:48:07 2022
english_wikipedia.txt        Fri Mar  4 17:48:07 2022
female_names.txt         Fri Mar  4 17:48:07 2022
male_names.txt       Fri Mar  4 17:48:07 2022

출력의 일관성을 보여주기 위해 출력을 표로 만드는 방법이 있습니까? 파일 이름과 생일을 좀 더 우아하게 표시하고 싶습니다.

미리 감사드립니다!

답변1

여기에서 다음을 사용할 수 있습니다.

gfind . -name '*.txt' -printf '%-40f %Bc\n'

또는

gfind . -name '*.txt' -printf '%40f %Bc\n'

파일 이름을 왼쪽 또는 오른쪽 정렬하고 공백으로 채우고 길이가 40바이트(불행히도 문자나 열이 아님)를 인쇄합니다.

파일 이름은 제어 문자, 멀티바이트 문자, 너비가 0인 문자 또는 이중 너비 문자를 포함하지 않고 40바이트를 넘지 않는 한 정렬됩니다.

날짜를 먼저 입력하면(Btime(%B)이 아닌 mtime(%T) 사용) 파일 수명에 유용한 정보가 전혀 반영되지 않으므로 이것이 원하는 것인지 의심됩니다. 표준 YYYY-MM-DDTHH:MM:SS[.subsecond]+ZZZZ와 같이 보다 유용하고 명확한 타임스탬프 형식을 사용하면 정렬에 대해 걱정할 필요가 없으며 정렬이 더 쉬워집니다.

find . -name '*.txt' -printf '%TFT%TT%Tz %f\n'

관련 정보