Dada a entrada de amostra:
find /tmp -lname '/net/*'
Mais geralmente, diga find
para explorar todos os sistemas de arquivos locais, mas para ficar em cada sistema de arquivos:
find $(lsblk --list --noheadings --output MOUNTPOINT | grep /) -xdev -lname '/net/*'
Ainda mais geralmente, peça ao find
para pesquisar os sistemas de arquivos locais, como acima, mas crie uma lista de possíveis destinos do NFS:
readarray -t nfsmounts < <(awk '$3 ~ /^nfs/ { print $2 }' < /proc/mounts)
excludes=()
excludes+=("(")
excludes+=(" -lname ${nfsmounts[0]}")
for((i=1;i < ${#nfsmounts[@]}; i++))
do
excludes+=( " -o -lname '${nfsmounts[i]}/*'")
done
excludes+=(")")
find $(lsblk --list --noheadings --output MOUNTPOINT | grep /) -xdev ${excludes[@]}
Outra alternativa para a lista inicial de sistemas de arquivos: parse / proc / filesystems para tipos de sistema de arquivos não nodev
:
find $( for type in $(awk '$1 != "nodev"' /proc/filesystems); do mount -l -t "$type" | awk '{print $3}'; done ) \
-xdev -lname '/net/*'