Alguém pode explicar o significado de - e ** em um comando linux / unix? [duplicado]

0
du -ch -- **/*.jpg | grep total

Especialmente, o que significa -- (traço duplo) e ** (asterisco duplo)?

Usando o shell Z

    
por Alistair Lobo 20.07.2018 / 11:46

2 respostas

3

O ** em zsh corresponde a * , mas permite a correspondência entre / em nomes de caminho. O padrão **/*.jpg será, portanto, expandido para o nome do caminho de qualquer arquivo que tenha um sufixo de nome de arquivo .jpg em qualquer lugar dentro ou abaixo do diretório atual.

O padrão ** também está disponível em bash , se ativado com shopt -s globstar . O ksh93 shell também, se ativado com set -o globstar .

O -- impede que qualquer nome de caminho (correspondente ao padrão acima) que comece com um traço seja interpretado por du como uma opção de linha de comando. O -- interrompe a análise da linha de comando de du da procura por outras opções. Isso não depende do shell, mas é uma POSIX " diretiva de utilidade " para padrão utilitários.

O -- poderia ser removido se o padrão globbing do nome do arquivo fosse alterado para ./**/*.jpg .

O comando fornecerá o tamanho total de todos os arquivos *.jpg dentro ou abaixo do diretório atual, extraindo a linha com o total da saída de du (execute o comando sem | grep total para ver o que du produz).

    
por 20.07.2018 / 12:00
0

De man-page of du uso

du [OPTION][PARAM]

du - lists disk space used by files

c - displays total 
h - human readable format (24M= meaning 24 MB)

-- - geralmente significa parâmetros de fim de opção em **/*.jpg - glob para localizar todos os caminhos correspondentes a esse caminho (foo / bar.jpg)
| -pipe

 grep total- this option is not required and is redundant, since -c[OPTION] is giving you grand total anyways.

TL; DR: lista o tamanho total do disco de imagens no formato .jpg a partir de uma etapa dentro do diretório a partir do diretório atual.

Eg- Se o seu Diretório atual é ~/Pictures então rodar este comando irá listar o tamanho do arquivo de todos os arquivos .jpg dentro recursivamente. (~ / Pictures / EuropeTrip / pic134.jpg) [*] significa todos para regex.

Não sei o que (total do grep) está fazendo / ou adicionando à saída e talvez seja desnecessário aqui.

    
por 20.07.2018 / 12:06