파일의 수정 날짜 및 시간 찾기 및 나열

파일의 수정 날짜 및 시간 찾기 및 나열

이름이 tomcat_으로 시작하는 서버에 여러 개의 디렉토리가 있습니다. 이 디렉토리에 preparetest.class와 같은 파일이 있습니다.

이제 특정 파일의 수정 날짜와 시간을 다음 형식으로 가져와야 합니다.

폴더 이름 수정 날짜

답변1

cd디렉터리가 있는 디렉터리로 이동하여 tomcat_*(모두 같은 디렉터리에 있을 필요는 없음) 다음 명령을 실행합니다.

find . -path "./*tomcat_*managetest.class"

예를 들면 다음과 같습니다.

./b/tomcat_c/managetest.class
./tomcat_a/managetest.class
./tomcat_a/b/managetest.class

하지만 ./b/c/managetest.class. managetext.class지금 당장 들어가야 한다면 알려주세요 tomcat_*.

이제 수정된 날짜를 인쇄하는 전체 명령은 다음과 같습니다.

find . -path "./*tomcat_*managetest.class" -exec stat -c "%n %y" {} \;

awk를 사용하여 위 명령 끝에 이와 같은 내용을 작성하여 더 관심 있는 필드(예: 연도 또는 시간)를 선택할 수 있습니다. 또는 gogoud가 제안한 대로 | awk '{print $1" "$2" "$3}'exec를 사용하는 대신 의 명령을 사용할 수 있습니다.findprintf

답변2

Ulrich가 제안한 대로 다음을 수행할 수 있습니다 find.

find "/mydir" -type f -regex ".*/tomcat_.*/managetest.class" -printf "%h %T+\n"

고쳐 쓰다:

필요한 형식을 얻으려면 awk를 통해 출력을 파이프할 수 있습니다.

find "/mydir" -type f -path "*/tomcat_*/managetest.class" -printf "%h %T+\n" | awk -F"[ /.]" '{print $(NF-4),$(NF-1)}'

awk 문은 출력을 "[space]/"의 임의 문자에 있는 필드로 분할합니다. - 그런 다음 더 높은 수준의 디렉터리, 파일 이름 또는 순간이 표시되지 않도록 필요한 필드인 네 번째이자 마지막 필드를 인쇄합니다. (나도 finds를 -path대신 사용하기로 전환했지만 -regex둘 다 동일한 목표를 달성합니다.)

관련 정보