mv 시스템 명령을 실행하려고 하는 다운로더가 Perl로 실행 중입니다.
MV 출력
mv: cannot move `./PMC5318673/EXCLI-15-758.pdf' to `/directory/EXCLI-15-758.pdf': No space left on device
드라이브에 공간이 있지만 폴더가 해당 inode를 모두 사용한 것 같습니다.
그래서 우리가 생각해낸 해결책은 디렉토리에서 가장 오래된 파일을 삭제하고 그 파일을 그곳으로 옮기고, mv할 공간이 아직 없으면 다음으로 가장 오래된 파일을 삭제하는 것이었습니다.
빠르게 실행되는 시스템 명령이 필요합니다. (파일이 수백만 개 이상 있어서 시간이 오래 걸리나요?) 가장 오래된 파일은 삭제할 수 있습니다. 또한 이러한 파일은 하위 폴더에 있는 경우도 있습니다.
또한, 가장 오래된 파일을 삭제하는 것 외에 다른 방법이 생각나시면 알려주세요.
답변1
zsh에서:
rm -- **/*(.om[-1])
(또는 다른 쉘에서 zsh -c 'rm -- **/*(.om[-1])'
:)
의미는 다음과 같습니다
**/*
재귀적으로 파일 수집( ... ) 는zsh 전역 한정자
.
"일반" 파일(디렉토리 등은 제외)만 고려됨을 의미합니다.om
수정 시간별 정렬을 나타냅니다.-1
가장 오래된 파일만 선택되었음을 나타냅니다.
~에 귀속됨Gilles의 답변에서 영감을 얻으십시오.
답변2
가장 오래된 파일 삭제
find . -name '*some-pattern*' -type f -printf '%T+ %p\n' | sort | head -n1 | awk '{print $2}' | xargs rm -v
여기서 목적은 -name '*some_pattern*'
삭제하려는 파일로만 일치를 제한하는 것입니다.
답변3
어떤 분께서 이 질문에 답변을 하신 후 삭제하셨는데, 저는 그 분들이 주신 답변을 그대로 활용했습니다.
find /path -mtime +1000 -exec rm -rf {} \;
이렇게 하면 1000일이 지난 파일이 삭제됩니다.