Preciso procurar arquivos começando com algum nome específico. Pode haver vários arquivos começando com um padrão específico e desejo listar todos esses arquivos presentes no diretório
58
Para concluir as respostas existentes:
ls
O utilitário de lista de diretórios padrão ls
pode ser usado em combinação com os curingas do shell. Para procurar todos os arquivos com padrão abc
:
ls abc* # list all files starting with abc---
ls *abc* # list all files containing --abc--
ls *abc # list all files ending with --abc
Observe que a extensão do arquivo também é relevante para os resultados da pesquisa.
tree
No caso de precisarmos listar arquivos em uma árvore de diretórios, também podemos emitir tree
para procurar um determinado padrão como:
tree -P 'abc*' # list directory tree of file starting with abc---
tree -l 'def*' # exclude files starting with def---
Nesse caso, tree
ele próprio suporta caracteres curinga.
ls -l B*
mostro o conteúdo de todos os diretórios começando com, emB
vez de apenas os nomes dos diretórios correspondentes?ls
para listar um diretório, ele é aberto, é o mesmo que fazerls -l BirthdayPhotos
. Você pode suprimir esse comportamento comls -d B*
.B*
como uma especificação de diretório?B*
expande para corresponder a todos os diretórios iniciados,B
para que você realmente passels
uma lista de diretórios, abre todos eles para você.ls -d ABC*
era sobre o que o autor estava perguntando. Os comentários no snippet de código também estão incorretos els abc*
lista o conteúdo dos diretórios que começam com abc.Você pode usar o
find
comando para procurar arquivos com padrãoO comando acima pesquisará o arquivo que começa com abc no diretório de trabalho atual.
-name 'abc'
listará os arquivos que correspondem exatamente. Por exemplo: abcVocê também pode usar
opção com o
find
comando para pesquisar o nome do arquivo usando um padrãofonte
Existem várias maneiras de fazer isso, dependendo exatamente do que você deseja fazer com elas. Geralmente, se você quiser apenas listá-las, poderá fazê-lo em um terminal usando:
find | grep '^\./ABC'
... e substituindo
ABC
pelo seu texto.Para entender o comando, vamos dividir um pouco:
find
lista todos os arquivos no diretório atual e seus subdiretórios; usá-lo sozinho irá listar tudo o que estiver lá. Observe quefind
gera cada arquivo ou diretório começando com./
, indicando que seu caminho é relativo ao diretório atual. Estar ciente disso é importante porque significa que procuraremos resultados começando com./ABC
e não apenasABC
.O caractere de pipe
|
redireciona a saída de um comando para outro; nesse caso, a saída defind
é redirecionada paragrep
. Isso é chamado de tubulação.grep
pega a saída e a filtra usando o padrão fornecido^\./ABC
,.' '
para impedir que o shell interprete os caracteres especiais dentro dele.Agora, o próprio padrão é escrito em uma sintaxe específica chamada expressão regular , ou regex , abreviando . O Regex é uma ferramenta de pesquisa extremamente poderosa, se você o dominar, e existem sites como este que o ensinam com mais profundidade, mas observe que esse
grep
não é um mecanismo de regex completo e você não pode fazer tudo com ele.Para o nosso propósito:
^
em regex corresponde ao início da string; isso evita que ele corresponda ao padrão, se não ocorrer no início do nome do arquivo..
em regex também tem um significado especial: significa "corresponder a qualquer caractere único aqui". Caso você queira usá-lo como um ponto literal, será necessário "escapá-lo" usando uma barra invertida\
antes dele. (Sim, combinar qualquer personagem seria inofensivo no nosso caso, mas eu fiz isso por uma questão de perfeição.)fonte
find | grep
quandofind
seus próprios recursos de correspondência de padrões perfeitamente bons?você pode usar o GREP, acho que essa é a solução mais simples, provavelmente também adicione outros parâmetros de grep para tornar a correspondência mais precisa
fonte
Você pode procurar um padrão específico usando o gerenciador de arquivos do Nautilus e expressões regulares.
Para fazer isso, clique em Selecionar itens correspondentes no menu de engrenagem como abaixo (você também pode pressionar Ctrl+ s).
Em seguida, basta digitar a expressão regular
ABC*
e validar.Todo arquivo cujo nome corresponde ao seu padrão será selecionado automaticamente.
Estou usando o Nautilus 3.6. * Do GNOME3 PPA no Ubuntu 12.10 (Quantal).
fonte
A solução mais fácil para mim
Aqui você pode dar qualquer expressão regular no PATTERN.
Por exemplo, para encontrar arquivos com "ab" em qualquer lugar dentro de seu nome, digite
Para localizar os arquivos começando com "ab", digite
fonte
Se você não souber o diretório em que os
ABC*
arquivos estão localizados e tiver milhões de arquivos, olocate
comando é o método mais rápido.Notas:
find
comando que começa no/
diretório raiz demora muito e gera muitos erros de permissão.sudo updatedb
primeiro.fonte
eu uso
ou
Ele mostra todos os arquivos com abc, não apenas começando com abc. Mas, é uma maneira muito fácil para mim fazer isso.
fonte
Pitão:
Perl:
fonte
É a correspondência de padrões globais, ancorada nas duas extremidades. Isso corresponderá a todas as ocorrências de arquivos que começam com "ABC", como "ABC", "ABC.txt", "ABC123", mas não com "xABC". Na linha de comando, usando 'ls' no lugar de 'printf', existe uma alternativa segura, porém, dependendo da opinião de quem você concorda, 'ls' não é seguro para uso em um script. Nesse caso, usar 'printf' com correspondência de padrões glob é considerado seguro. Se você usar isso em um script, a saída de 'printf' não conterá um novo caractere de linha até o final do fluxo de saída, como tal:
Devoluções:
Se você precisar de quebras de linha após cada instância:
Devoluções:
"/ caminho / para / arquivos /" permanece na saída se você a inseriu dessa maneira ao executar o comando 'printf'. Sem ele, apenas o nome do arquivo aparece:
Devoluções
Supondo que você execute o comando no diretório em que os arquivos existem.
fonte
echo /path/to/files/ABC* | tr " " "\n"
é uma boa ideia. Considere se existe um arquivo/path/to/files/ABC EFG
, há um espaço no nome do arquivo. Vocêtr
dividirá o nome do arquivo em duas linhas separadas, o que não é bom. Pior ainda, se houver vários espaços no nome do arquivo. Eu recomendo que você useprintf "%s\n" ABC*
em vez disso, o que deve ajudar com espaços nos nomes de arquivos, mas ainda é problemático com outros caracteres especiais como\n
Command-t em um dos meus plugins favoritos do vim, é um plugin baseado em rubi acima da integração com o FZF.
Usando Comamnd-T e FZF, você pode fazer a pesquisa com um mecanismo "difuso" extremamente rápido para:
Como você pode ver
Eu sempre procuro no histórico de comandos abrindo um novo terminal e pressione:
Além de procurar em todas as pastas recursivamente, escrevendo em qualquer guia do terminal:
Então inicie o seu nome de arquivo
Além disso, você pode escrever dentro
vim
Realmente útil, especialmente em pastas grandes.
fonte
Suponha que eu esteja no diretório raiz e deseje apenas a lista do diretório etc: escrevemos,
resultado que obtemos,
Outro exemplo,
Também podemos escrever:
Nós temos,
fonte