È 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.