É tudo o que não é um link simbólico

12

Tem lsuma maneira de mostrar condições negadas como "todos os arquivos que não são um link simbólico"? Eu uso muito este último em um diretório de projeto, mas outras negações também seriam úteis.

Por enquanto, minha pesquisa apenas levou à criação de um alias para algo "como":

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

mas, obviamente, dessa forma, não entendo a cor ls, a formatação da coluna, etc.

Às vezes, estou no Bash v3 no OS X 10.8.2 e no Bash v4 no Pangolin.

Robottinosino
fonte

Respostas:

14

Em vez de canalizar sort, use ls.

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

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

Se você usou o shell zsh, poderá usar suas extensões glob não portáteis:

ls -d *(^@)
Random832
fonte
Thx 4 a resposta! Por que você escapa? Parece estar funcionando mesmo sem .. O que estou arriscando por não escapar dela? Interessante como você usa uma final +e não \;, por favor, explique?
Robottinosino 5/10/12
2
@Robottinosino O +faz enviar tudo para um único lscomando, em vez de executá-lo separadamente para cada arquivo (desta forma, podemos fazer as colunas e a classificação). Eu escapei do! porque é um personagem especial para algumas conchas, mesmo que a sua pareça aceitá-la bem.
usar o seguinte código
Peguei vocês. Coisas boas! Você concorda que é um pouco trabalhoso apenas negar um predicado de uma maneira simples ls? Poderia haver uma maneira melhor?
Robottinosino
1
@Robottinosino Editado com algo que o zsh pode fazer. Eu não acho que o bash possa fazer isso.
usar o seguinte código