como usar ls em vez de encontrar?

1

Eu estava usando find para fazer o loop de alguns arquivos, os alvos são os arquivos que têm esse tipo de estrutura:

EDI_2016-03-03_09-45-09_TARGET-TYPE_4830_453a2cbb-b8d4-4982_6549_6116_xazfzeg.PDF

o objetivo é encontrar os arquivos que começam com EDI_ e contém TARGET-TYPE no meio, usando o comando:

find . -name "EDI_*_TARGET-TYPE*"

E como vou usar a saída com um loop, não quero usar find e usar ls (tive muitos problemas com arquivos com espaços e encontre).

Isso funciona: ls EDI_

  • não funciona: ls EDI_*_TARGET-TYPE*

  • e isso não funciona: ls "EDI_*_TARGET-TYPE*"

  • e isso não funciona: ls 'EDI_*_TARGET-TYPE*'

e eu realmente não sei porque, se alguém puder traduzir o comando find para mim, isso seria ótimo.

    
por Kingofkech 18.10.2017 / 15:32

2 respostas

2
$ touch EDI_2016-03-03_0945-09_TARGET-TYPE_4830_453a2cbb.pdf
$ touch EDI_2016-03-03_0945-09_TARGET-TYPE_4830hhh_453a2cbb.pdf
$ ls EDI_*_TARGET-TYPE*
EDI_2016-03-03_09-45-09_TARGET-TYPE_4830_453a2cbb.pdf
EDI_2016-03-03_09-45-09_TARGET-TYPE_4830hhh_453a2cbb.pdf

Funciona para mim. Bash shell Ubuntu LTS recentes.

    
por 18.10.2017 / 15:51
4

O que eu faria:

for file in EDI_*_TARGET-TYPE*; do
    do_something "$file"
done
    
por 18.10.2017 / 15:42