A) 다음 코드를 사용하여 파일의 수정 날짜를 가져옵니다. 그러나 이는 하위 디렉터리도 선택하므로 오류를 반환합니다. 이 문제를 어떻게 해결할 수 있습니까?
for file in $1/*; do
echo `stat -c %y $file | cut -d ' ' -f1`
done
$1은 내가 전달한 디렉토리입니다.
B) 다른 방법이 있나요? 디렉터리와 날짜 범위를 명령줄 인수로 전달하고 해당 날짜 범위 내의 파일과 수정 날짜를 나열해야 합니다. 예를 들어 output.sh /home/user/desktop 2014-10-07 2014-11-17
해당 시간 간격 동안 수정된 해당 디렉터리의 모든 파일을 나열해야 합니다.
답변1
$1
1000분 이상, 2000분 이상 된 디렉터리에서 모든 파일을 찾으려면 다음을 수행하세요 .
find "$1" -maxdepth 1 -type f -mmin +1000 -mmin -2000
하위 디렉터리를 재귀적으로 검색하려면 를 제거하세요 -maxdepth 1
.
분 대신 정수로 시간을 지정하려면 다음을 사용하십시오 -mtime
.
find . -maxdepth 1 -type f -mtime +20 -mtime -26
디렉터리를 건너뛸 때 파일 반복
-d
디렉터리를 테스트하고 건너뛰는 데 사용할 수 있습니다 continue
.
for file in "$1"/*; do
[ -d "$file" ] && continue
echo $(stat -c %y $file | cut -d ' ' -f1)
done