delimitador personalizado para resultados de localização unix

5

Eu quero usar find para encontrar alguns arquivos e retornar todos os arquivos como uma única linha (sem caracteres de nova linha) e um delimitador personalizado entre os arquivos.

Assim, por exemplo, o resultado de três arquivos seria

/my/file/1::/my/file/2::/my/file/3

em vez de

/my/file/1
/my/file/2
/my/file/3

Existe alguma maneira de conseguir isso usando ferramentas unix padrão em combinação com find ?

    
por muffel 06.07.2015 / 00:09

1 resposta

8

Você pode usar:

find . -type f -printf '%p::' | sed 's/::$/\n/'
  • O predicado -printf de find imprimirá os nomes dos arquivos em uma única linha delimitada por :: e, em seguida, sed substituirá o último :: por uma nova linha.

Exemplo:

$ find . -type f -printf '%p\n'
./foo
./test
./bar

$ find . -type f -printf '%p::' | sed 's/::$/\n/'
./foo::./test::./bar
    
por 06.07.2015 / 00:23

Tags