다음 명령을 사용하면 마지막으로 수정된 에포크 시간과 함께 현재 디렉터리와 관련된 모든 디렉터리를 나열할 수 있었습니다.
find . -exec stat -c '%n: %Y' {} \;
출력은 다음과 같습니다.
.: 1569247414
./a_file.txt: 1561624333
./some_folder: 1561624645
./some_folder/some_file.txt: 1561624645
./some_folder/another_file.txt: 1536557809
모든 항목의 시작 부분에 나타나는 "./"를 제거하고 디렉터리인 경우 '/'를 추가하려면 어떻게 해야 합니까?
보너스로 첫 번째 항목 '.'을 제거합니다. 현재 폴더만 있으면 좋을 것 같습니다.
건배
답변1
- 깊이==0을
-mindepth 1
제거하려면 추가하세요 ..
- 대안:
find *
대신 사용find .
- 다음을 사용하여 폴더에서 파일을 분리하세요.
-type d ... -or -type f ...
- 여러 파일을 에 보내는
+
대신 대신 사용하십시오 . 그것은 그것을 처리할 수 있고 훨씬 더 빨라질 것입니다!\;
stat
find * \
-type d -exec stat -c '%n/: %Y' {} + \
-or -type f -exec stat -c '%n: %Y' {} +
하지만...
-exec stat
전혀 필요하지 않습니다 !
find
s bultin을 사용하여-printf
마지막 수정 날짜를 인쇄합니다( 's%Cs
와 동일 ).stat
%Y
-printf '%P'
대신 각 파일 이름의 시작 부분%p
을 제거할 수도 있습니다 ../
find . -mindepth 1 \
-type d -printf '%P/: %Cs\n' \
-or -type f -printf '%P: %Cs\n'
산출:
a_file.txt: 1561624333
some_folder/: 1561624645
some_folder/some_file.txt: 1561624645
some_folder/another_file.txt: 1536557809