Como você abre vários arquivos com dash'- 'no início do nome do arquivo?

1

Eu posso abrir o arquivo por vez usando cat -- -file00 , mas quero abrir vários arquivos de uma só vez. Tentei usar find, não consigo descobrir.

find ./ -name '*.txt' exec cat {} \;

find ./ -name '*.txt' exec grep 'inhere' {} \;

Nada disso está funcionando. Eu tenho vários arquivos no diretório neste formulário: -file00 -file01 -file03 -arquivo04 -arquivo05 -arquivo06

    
por Srijan Singh 08.03.2018 / 17:10

2 respostas

3

-name '*.txt' deve corresponder aos arquivos cujo nome termina em .txt . Isso não combina com o seu. Use um padrão que corresponda aos seus arquivos:

find . -name '-file*' -exec cat {} +

Ou

cat ./-file*

se eles estiverem todos no diretório atual (também terão o benefício de concatenar esses arquivos ordenados em ordem alfabética, ao contrário de find , que lista arquivos em ordem aleatória).

Observe que o -- não é necessário acima, pois os argumentos passados para cat all começam com ./ , não - .

Para uma correspondência mais específica (somente -file seguido por exatamente dois dígitos decimais): ./-file[0-9][0-9]

    
por 08.03.2018 / 17:17
0

Você também pode usar xargs , se quiser.

find ./ -name '-file0*' | xargs cat 

Como mencionado acima, nenhum dos seus arquivos tem .txt como extensão. Se eles fossem, você poderia substituir -file0* por *.txt

    
por 08.03.2018 / 19:27