Como verificar se determinados nomes de arquivos existem em um diretório ou não? [fechadas]

0

Eu tenho um caminho /opt/backup/ que tem muitos arquivos. Exemplo:

100051
100052
100053 
etc.

Eu quero saber se 100051 100052 100053 arquivos estão ou não em /opt/backup/ ?

    
por Amrut Nadgiri 04.07.2018 / 09:20

3 respostas

1

Você pode executar ls nos nomes de arquivo que deseja verificar, por exemplo:

$ ls -ld /opt/backup/10005{1,2,3}

ls: cannot access '/opt/backup/100052': No such file or directory
ls: cannot access '/opt/backup/100053': No such file or directory
-rw-r--r-- 1 root root 0 Jul  4 09:25 /opt/backup/100051

Neste exemplo, você pode ver que /opt/backup/100051 existe, enquanto o /opt/backup/100052 e /opt/backup/100053 não.

  • -l é opcional, mas acho que tem saída mais útil
  • -d é para evitar a saída do conteúdo do diretório

Se você quiser verificar em um script, use -f :

for f in /opt/backup/10005{1,2,3}; do
  if [ -f "$f" ]; then
    echo "Exists: $f"
  else
    echo "Not Exists: $f"
  fi
done

Saída:

Exists: /opt/backup/100051
Not Exists: /opt/backup/100052
Not Exists: /opt/backup/100053
    
por 04.07.2018 / 09:26
0

Quando é apenas uma coisa única e não me importo em pensar muito, acho que conclusão da tabulação é uma verificação rápida para o nome exato ou existência de um determinado arquivo ou diretório (na maioria dos shells, de qualquer forma). Eu costumo começar com ls ou cat como:

ls /opt/backup/10003[TAB]

... onde [TAB] está simplesmente pressionando a tecla tab. O nome do arquivo correspondente será preenchido se houver apenas uma conclusão possível. Se houver mais de uma possibilidade, uma lista delas será retornada. Alguns shells exigem mais de uma pressão da tecla [TAB] antes de retornarem uma lista de candidatos.

100030    100031    100032    100033

É possível que um shell não permita a conclusão de tabulação por padrão (ou de forma alguma). Na minha experiência, isso foi muito raro. Uma instalação particular de uma versão mais antiga do Solaris me vem à mente.

Por outro lado, se você precisar verificar os mesmos arquivos várias vezes, outras respostas aqui seriam muito melhores. O caso de uso realmente não está especificado.

    
por 04.07.2018 / 09:57
0

Esse é um uso típico do comando localizar :

find /opt/backup -type f -name "100051" -o -name "100052" -o -name "100053"
  • filtros -type f apenas no arquivo

  • -o argumento significa OR

  • -name permite que você especifique um modelo de nome

Você também pode definir o número de níveis que deseja pesquisar usando - maxdepth ou -mindepth

Se os arquivos forem encontrados, a saída será:

/opt/backup/100051
/opt/backup/100052
/opt/backup/100053
    
por 04.07.2018 / 09:29

Tags