È tutto ciò che non è un link simbolico


12

C'è lsun modo per mostrare condizioni negate come "tutti i file che non sono un collegamento simbolico"? Uso molto quest'ultimo in una directory di progetto, ma sarebbero utili anche altre negazioni.

Per ora, la mia ricerca ha portato solo a creare un alias per qualcosa di "simile":

find . -maxdepth 1 ! -type l | sort # (...)

ma ovviamente in questo modo non ottengo la colorazione ls, la formattazione della colonna, ecc ...

Sono su Bash v3 su OS X 10.8.2 e Bash v4 su Pangolin a volte.

Risposte:


14

Invece di collegarlo a sort, usa ls.

find . -maxdepth 1 \! -type l -exec ls -d {} +

find . -maxdepth 1 \! -type l | xargs ls -d

Se hai usato la shell zsh potresti usare le loro estensioni glob non portatili:

ls -d *(^@)

Grazie 4 la risposta! Perché fuggi! Sembra funzionare anche senza ... Cosa sto rischiando non sfuggendo? Interessante come usi un finale +e non \;, per favore, spiegalo?
Robottinosino,

2
@Robottinosino The lo +fa inviare tutto ad un singolo lscomando invece di eseguirlo separatamente per ogni file (in questo modo possiamo fare le colonne e l'ordinamento). Sono sfuggito al! perché è un personaggio speciale per alcune conchiglie anche se il tuo sembra accettarlo bene.
Casuale 832

Gotcha. Roba fantastica! Sei d'accordo che sia un po 'laborioso, solo per negare un predicato in modo semplice ls? Potrebbe esserci un modo migliore?
Robottinosino,

1
@Robottinosino Modificato con qualcosa che zsh può fare. Non credo che Bash possa farlo.
Casuale 832,
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.