![마운트 지점의 파일 및 디렉터리를 나열하는 방법](https://linux55.com/image/59731/%EB%A7%88%EC%9A%B4%ED%8A%B8%20%EC%A7%80%EC%A0%90%EC%9D%98%20%ED%8C%8C%EC%9D%BC%20%EB%B0%8F%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EB%A5%BC%20%EB%82%98%EC%97%B4%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
마운트 지점(예: /dev/sda1)이 주어지면 쉘 스크립트를 사용하여 해당 파일 시스템의 내용을 어떻게 나열할 수 있습니까? 내 목표는 이 드라이브에서 가장 오래된 파일을 삭제하는 것입니다.
답변1
/dev/sda1
블록 장치입니다. 파일 시스템이 포함될 수 있습니다. 마운트되면 파일 시스템은 마운트 지점(예: , , )에서 사용할 수 /home
있으며 /
파일 시스템 내 일부 디렉터리는 다른 파일 시스템에 대한 마운트 지점이 될 수 있습니다(다른 블록 장치 또는 가상 장치에 있을 수 있음). , 또는 /proc
네트워크...).
/dev/sda1
에 설치된 경우 /
가장 오래된 것을 제거하십시오(마지막 수정 시간 기준).정기적인파일을 사용하면 최신 GNU 시스템에서 다음을 수행할 수 있습니다.
find / -xdev -type f -printf '%T@:%p\0' |
sort -zn |
sed -z 's/[^:]*://;q' |
xargs -r0p rm -f
이 -xdev
플래그는 find
하나의 파일 시스템을 고수하라는 것, 즉 /
이 경우 마운트된 다른 파일 시스템으로 이동하지 말라고 지시합니다.
다른 파일 시스템은 마운트 지점의 파일 시스템에 있는 파일을 숨길 수 있습니다. 예를 들어 가 /dev/sda1
다음에 마운트되었지만 /
을 포함하고 /home/some-old-file
가 /dev/sda2
다음에 마운트된 /home
경우 /home/some-old-file
액세스할 수 없습니다.
적어도 Linux에서는 /
다른 디렉터리에 바인드 마운트하여 이 문제를 해결할 수 있습니다.
mount --bind / /mnt/side-access-to-root
그러면 파일 시스템에 마운트된 모든 파일을 /
통과할 수 있습니다 /mnt/side-access-to-root
.
-xdev
그런 다음 이를 생략 하고 globbing을 사용하여 zsh
가장 오래된 파일을 제거 할 수 있습니다 .
rm -i /mnt/side-access-to-root/**/*(D.Om[1])
답변2
/dev/sda1은 마운트 지점이 아니며 드라이브의 파티션을 가리킵니다.
디스크를 마운트하려면 다음을 사용하십시오.
mount -t vfat(OR THE TYPE OF YOUR DRIVE) /dev/sda1 /path/to/mount/to
그런 다음 경로의 모든 파일을 나열하려면 다음을 사용할 수 있습니다.
ls
그러나 X일보다 오래된 모든 파일을 삭제하려면 다음을 사용할 수 있습니다.
find /path/to/files* -mtime +x -exec rm {} \;