Eu uso find
para obter uma lista de arquivos, então eu grep para fazer uma correspondência de caminho:
$ find pc* | grep -i arthur
pc6/arthurv/untitled-2.py
pc6/arthurv/untitled-3.py
pc6/arthur.py
pc9/Arthur 4C
pc9/Arthur 4C/untitled-1.py
pc9/Arthur 4C/untitled-2.py
Eu gostaria de fazer como em ls -F
e acrescentar um /
para cada diretório.
Como alternativa, como faço para encontrar para mostrar todos os diretórios que correspondem a maiúsculas e minúsculas arthur
?
Você pode usar disjunções em
find
expressões para implementar o processamento condicional; com GNUfind
:encontrará tudo nos caminhos que começam com os arquivos e diretórios correspondentes a “pc*” e imprimirá seus nomes, seguidos por um “/” se forem diretórios.
A forma como isso funciona é a seguinte:
pc*
especifica os caminhos para iniciar;-type d
diretórios de jogos;-printf "%p/\n"
imprime o caminho para o arquivo atualmente processado, seguido por “/” e uma nova linha; porque segue-type d
, ele só é executado se for-type d
correspondido (há uma conjunção implícita);-o
introduz uma disjunção: a expressão que a segue será avaliada se a expressão que a precede não corresponder (e a expressão que a precede está-type d -printf "%p/\n"
aqui, porque as conjunções têm maior precedência que as disjunções);-print
imprime o caminho para o arquivo atualmente processado.Mostrar todos os diretórios que correspondem a “arthur” que não diferencia maiúsculas de minúsculas pode ser feito usando outras
find
expressões:find
tem uma enorme quantidade de opções e detalhes. Outra variante é usar-printf
com%y
onde
%y
adiciona um "d" ou um "f" assim comols -l
Apenas para adicionar as respostas aqui para listar todos os arquivos e diretórios:
resultado:
Onde anteriormente o problema
dir1/dir2
não tinha uma barra final:Em última análise, por poder comparar um arquivo tar e um diretório.