디렉토리인 경우 파일 이름에 '/'를 추가하고 앞에서 "./"를 제거하는 stat 명령 형식

디렉토리인 경우 파일 이름에 '/'를 추가하고 앞에서 "./"를 제거하는 stat 명령 형식

다음 명령을 사용하면 마지막으로 수정된 에포크 시간과 함께 현재 디렉터리와 관련된 모든 디렉터리를 나열할 수 있었습니다.

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전혀 필요하지 않습니다 !

  • finds 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

관련 정보