マウントポイントのファイルとディレクトリを一覧表示する方法

マウントポイントのファイルとディレクトリを一覧表示する方法

マウントポイント(例:/ 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 {} \;

関連情報