마운트 지점의 파일 및 디렉터리를 나열하는 방법

마운트 지점의 파일 및 디렉터리를 나열하는 방법

마운트 지점(예: /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 {} \;

관련 정보