これは、マウントポイントが異なるシステム(少なくともUbuntu 18.04とRHEL 8.3)間で機能し、普遍的ですが、より良い方法はありますか?
("Permission Denied"を見つけてpg_ctl
除外したいのは無視してください。 find
それが私が尋ねるものです。)
$ realfs=$(df -x tmpfs -x devtmpfs | tail -n +2 | awk '{print $6;}' | xargs)
$ echo $realfs
/ /boot/efi /Database/12 /Database/12/backups
$ find ${realfs} -xdev -type f -name pg_ctl |& grep -v "Permission denied"
/usr/bin/pg_ctl
/usr/lib64/pgsql/postgresql-10/bin/pg_ctl
私がこの方法を開発した理由は、この方法が異なるマウントポイントを持つシステム全体で普遍的である必要があるだけでなく、-prune
混乱しているからです。
答え1
Linuxでサポートされているファイルシステムは、次のリストにリストされています/proc/filesystems
。いいえnodev
物理ローカルファイルシステムは.thereと表示されます。
fs=($(grep -v '^nodev' /proc/filesystems))
興味のあるタイプの配列が与えられたら、find
それをsで使用できます-fstype
。
findfs=($(echo ${fs[*]/#/ -o -fstype }))
find / \( -false ${findfs[*]} \)
これにより、ファイルシステムセットのハードコーディングを防ぐことができます。入らないようにする時間を早めましょう。これにはいくつかの欠点があります。特に、状況によっては問題になる可能性があるネットワークファイルシステムを除外します。