Isso será movido foo.c
para o novo diretório baz
com o diretório pai bar
.
mv foo.c `mkdir -p ~/bar/baz/ && echo $_`
A -p
opção para mkdir
criar diretórios intermediários, conforme necessário.
Sem-p
todos os diretórios no prefixo do caminho, já deve existir.
Tudo dentro dos backticks ``
é executado e a saída é retornada em linha como parte do seu comando.
Como mkdir
não retorna nada, apenas a saída de echo $_
será adicionada ao comando.
$_
referencia o último argumento ao comando executado anteriormente.
Nesse caso, ele retornará o caminho para o seu novo diretório ( ~/bar/baz/
) passado para o mkdir
comando.
Descompactei um arquivo compactado sem dar um destino e queria mover todos os arquivos, exceto
demo-app.zip
do meu diretório atual para um novo diretório chamado
demo-app
.
A seguinte linha faz o truque:
mv `ls -A | grep -v demo-app.zip` `mkdir -p demo-app && echo $_`
ls -A
retorna todos os nomes de arquivos, incluindo arquivos ocultos ( exceto os implícitos .
e..
).
O símbolo de canal |
é usado para canalizar a saída do ls
comando grep
( um utilitário de pesquisa em linha de comando e texto sem formatação ).
O -v
sinalizador direciona grep
para encontrar e retornar todos os nomes de arquivos, exceto demo-app.zip
.
Essa lista de arquivos é adicionada à nossa linha de comando como argumentos de origem no comando move mv
. O argumento target é o caminho para o novo diretório passado para o mkdir
referenciado using $_
e output using echo
.