indipendente dal sistema trovi i seguenti link simbolici?


2

Voglio usare il comando 'trova' e farlo seguire collegamenti simbolici. Tuttavia, ho bisogno di chiamare il comando da un altro codice (IDL, che non ha una ricerca di file incorporata molto piacevole) sia su un sistema RedHat che su un Mac OS X.

Il problema è che il sistema RedHat utilizza GNU find versione 4.1.20, mentre mac find è una versione BSD. In mac find, usi find -Lseguire i symlink. Nella versione GNU, si utilizza find -follow. Non sembrano esserci opzioni comuni tra i due per i seguenti collegamenti simbolici.

Una soluzione alternativa per le mie macchine è quella di cambiare la mia findin una versione privata, ma questa non è un'opzione accettabile per la distribuzione del codice. Qualcuno può raccomandare alternative? C'è qualcosa nel findmanuale che mi è mancato nel dire come seguire i collegamenti simbolici che non dipendono dalla versione?


1
Dovresti incollarlo come risposta e non come modifica.
surfasb,

Risposte:


4

Stavo solo usando trova in modo errato.

Questo fallisce:

$ find -follow . -name "t*"
find: ollow: No such file or directory

Mentre funziona:

$ find . -name "t*" -follow

Penso che sia perché -f è un'opzione speciale da trovare.

Si noti che anche la versione GNU di find non consente -follow prima del percorso, ma almeno fornisce un errore utile:

find: paths must precede expression

2
Questo è ciò che la seconda linea di man findha da dire su questo: find [-H | -L | -P] [-EXdsx] [-f path] path ... [expression]. Il percorso precede sempre l'espressione di ricerca ...
Daniel Beck
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.