Como usar o locate para procurar a pasta pai de um arquivo?

1

Por exemplo, eu tenho este arquivo nesta pasta

folder_x/folder_y/file1.txt

Eu quero fazer algo assim:

locate -xxxx file1.txt

e obtenha isso

/folder_x/folder_y/
    
por phong 20.11.2015 / 07:46

1 resposta

0

Você pode usar dirname que extrai o nome da pasta pai de um nome de arquivo completo.

Por exemplo, se for um arquivo único,

 dirname $(locate myuniquefile)

No caso de várias respostas, você pode processar cada entrada ...
por exemplo, usando o awk para construir seu comando e canalizar a saída para um shell bash.

locate \.mp3  | awk '{print "dirname \""$0"\""}'  | /bin/bash 

Com a moderna bash, você pode usar outras construções também como aqui string um:

/bin/bash <<< $(locate \.mp3  | awk '{print "dirname \""$0"\""}' ) 

Nota: por motivos de segurança ( cavalos de Tróia ) é uma boa prática usar o caminho completo para invocar os comandos: então melhor /bin/bash então simplesmente bash .

    
por 20.11.2015 / 07:58

Tags