Se você quiser listar todos os arquivos, exceto aqueles dentro de um determinado diretório, digamos, notHere
, você pode usar o comando find
para fazer como
find . -path ./notHere -prune -o -type f -print
Explicação:
-
.
: o diretório para iniciar ofind
em -
-path ./notHere
: inicie uma regra que corresponda ao caminho./notHere
-
-prune
: impede quefind
entre no diretório com a correspondência atual -
-o
: adicione umor
para especificar o que queremos que aconteça se a primeira regra não corresponder a -
-type f
: corresponde apenas a arquivos, não a diretórios (remova isso se quiser ver as entradas do diretório também) -
-print
: muitas vezes não é necessário, pois é a ação padrão, mas algumas versões defind
ainda querem que você diga expressamente que deseja que o resultado seja impresso
Você mencionou querer outra saída (especificamente ls -ll
) do que apenas a lista de nomes de arquivos. O find
geralmente tem um built-in para ajudar nisso, mas não essas opções específicas para ls
. Você pode substituir o -print
flag acima por -ls
e ver se esse conjunto de ls
está próximo o suficiente para você:
find . -path ./notHere -prune -o -type f -ls
ou se isso não for bom o suficiente, você pode ter find
executando o comando que você quer em vez de tentar processar a saída separadamente como:
find . -path ./notHere -prune -o -type f -exec ls -ll {} +