Encontre um arquivo particular da extensão do diretório particular

0

Eu quero encontrar um nome de arquivo específico de um diretório específico.

Além disso, não sei o nome do arquivo nesse diretório específico. Eu só conheço a extensão desse arquivo, por exemplo, ".uploaded". Então, usando essa extensão .uploaded eu quero encontrar o filemane.

Eu quero o nome do arquivo na saída sem o caminho completo até o diretório específico, eu só quero filename.

Então, como posso fazer isso?

    
por Prakash V Holkar 29.04.2014 / 09:58

2 respostas

0

Você pode remover o caminho para o arquivo por rev-cut-rev:

ls dir/*.uploaded | rev | cut -d/ -f1 | rev
    
por 29.04.2014 / 10:09
0

Exemplo de estrutura de diretório:

$ ls -1 test
a
b.uploaded
c.uploaded
d.uploaded
e

Com find , adequado para passar por outro comando via xargs :

$ EXT='.uploaded'; find dir -maxdepth 1 -name "*$EXT" -exec basename {} "$EXT" \;
d
b
c

No script de shell, usando basename para remover o diretório e o sufixo:

$ EXT=".uploaded"; for i in dir/*"$EXT"; do basename -- "$i" "$EXT"; done
b
c
d

No script de shell, usando a expansão de parâmetro:

$ EXT=".uploaded"; for i in dir/*"$EXT"; do i=${i##*/}; printf '%s\n' "${i%$EXT}"; done
b
c
d

Observe que você pode atingir vários arquivos. Você não definiu o que você quer que aconteça depois do arquivo. Se você tiver certeza de que há apenas um arquivo correspondente, você pode usar basename diretamente:

$ rm dir/{b,d}.uploaded
$ basename dir/*.uploaded .uploaded
c

mas isso falhará se o glob combinar vários arquivos.

    
por 29.04.2014 / 10:50