Melhor maneira de listar apenas os arquivos que possuo

Melhor maneira de listar apenas os arquivos que possuo

Qual seria o melhor comando shell "one liner" que eu poderia usar para listar todos os arquivos em um diretório, mostrando apenas aqueles que possuo?

Responder1

Uma linha curta seria:

find . -maxdepth 1 -user $USER

Se você estiver procurando no diretório atual, poderá omitir o arquivo .. Se você não sabe se $USERestá disponível, você pode substituí-lo por $LOGNAMEou $(whoami).

Adicione -lspara mostrar detalhes do arquivo, por exemplo:

find / -maxdepth 1 -user root -ls

Se você deseja fornecer sinalizadores personalizados, lsvocê pode usá-los via -exec:

find / -maxdepth 1 -user root -exec ls -ld {} +

(Nesse caso, o -dsinalizador to lsé necessário para listar os diretórios como eles próprios e não como seu conteúdo.)

Responder2

Use o comando abaixo

[username@localhost~]$ find / -user username -exec ls -l {} \; 2>/dev/null

encontre todos os arquivos em todo o sistema pertencentes ao nome de usuário. Se você encontrar em um diretório específico, basta substituir o local / .

[username@localhost~]$ find /path/of/direcotry -user username -exec ls -l {} \; 2>/dev/null

NB:2>/dev/null anula a saída de erro.

Responder3

Como você não especificou o formato da saída, você também pode fazer isso com ls e grep:

ls -lG | grep username

Primeiro usamos ls com o parâmetro -l, para obter a listagem que inclui nome de usuário e nome de grupo.

Em seguida, removemos o nome do grupo do resultado com o parâmetro -G.

Depois disso, simplesmente canalizamos para grep e obtemos todos os resultados com o nome de usuário desejado.

EDITAR: Como apontado nos comentários, isso énão é um cofreou solução à prova de balas - no entanto, dependendo das circunstâncias, pode ser rápida e suja. Interativamente, pode ser aceitável, mas você não deve usá-lo em nenhum script!

Responder4

Com zsh, você poderia fazer isso usando oqualificador globalu:

ueu ia

arquivos pertencentes ao ID do usuárioeu iase isso for um número. De outra forma,eu iaespecifica um nome de usuário: o caractere após ' u' será considerado um separador e a string entre ele e o próximo separador correspondente será considerada um nome de usuário. Os separadores iniciais ' [', ' {' e ' <' correspondem aos separadores finais ' ]', ' }' e ' >', respectivamente; qualquer outro caractere corresponde a si mesmo. Os arquivos selecionados são de propriedade deste usuário. Por exemplo, ' u:foo:' ou ' u[foo]' seleciona arquivos pertencentes ao usuário ' foo'.

então, por exemplo, com o usuárioID

print -rl ./*(u1027)

ou com nome de usuário

print -rl ./*(u_yourusernamegoeshere_)

Como de costume, você pode combiná-lo com outros qualificadores, modificadores, etc., por exemplo, para listar apenas arquivos regulares, ocultos ou não, de propriedade do usuário UID 1027e classificados por mtime:

print -rl ./*(.Domu1027)

informação relacionada