Meu sistema operacional e diretório inicial estão em um SSD. Eu armazeno alguns arquivos grandes em um disco rígido e o link simbólico do meu diretório pessoal para o disco rígido (por exemplo, ~ / Videos / Films é um link simbólico para / mnt / hdd / Films). Eu também tenho vários prefixos de vinho, cada um dos quais com dosdevices / z: vinculado a /.
Então, se eu usei find sem -L, ele perderá tudo o que está no disco rígido. Mas se eu usar find com -L, ele termina em um loop devido ao link simbólico do Wine para /.
Existe alguma maneira sensata de resolver isso, para encontrar pesquisas onde eu quero? Intuitivamente, estou querendo algo como "siga os links simbólicos, a menos que estejam sob um diretório chamado dosdevices". "Seguir links simbólicos que estão em algo no disco rígido" também funcionaria.
-prune
é exatamente o tipo de coisa que eu estava procurando. Descobri quefind ~ \( -lname ~ -o -lname ~/\* -o -lname / \) -xtype d
lista todos os links simbólicos que não quero seguir; Agora estou tentando encontrar uma maneira de usar essa consulta para podar.find ~ <negative criteria> -prune -o <positive criteria> -print
, entãofind ~ \( -lname ~ -o -lname ~/\* -o -lname / \) -xtype d -prune -o <whatever it is you want> -print
Para pesquisar TODOS os links, funcionou para mim:
fonte
Quantos links simbólicos para discos rígidos você possui? Se não houver muitas soluções, não use "-L" enquanto especifica explicitamente os links simbólicos que você deseja seguir na linha de comando find. Algo como:
Isso pesquisará o diretório atual ("."), Bem como o link simbólico "~ / Videos / Films", mas não descerá para outros links simbólicos.
fonte
Outra solução que contorna o problema (pelo menos no meu caso) é usar montagens de ligação em vez de links simbólicos para os diretórios no disco rígido. Isso é feito adicionando entradas da
/etc/fstab
seguinte maneira:/mnt/hdd/Films /home/mark/Videos/Films none bind 0 0
fonte