Para limpar uma pasta de saída reutilizável sem remover a própria pasta, crie um Atalho no Mac que remova apenas o conteúdo dela. Este passo a passo usa uma pasta fixa, arquivos de texto descartáveis e um script de shell que verifica a pasta antes de limpá-la.

A tarefa é redefinir uma pasta entre lotes de arquivos gerados. O exemplo inclui arquivos comuns, um nome de arquivo com espaços, um arquivo oculto e uma pasta aninhada. O script remove esse conteúdo diretamente; não o move para o Lixo. O manual publicado pela Apple sobre rm documenta a remoção recursiva e o relato de erros. Manual da Apple sobre rm

Decida o que deve permanecer após a limpeza

Neste fluxo de trabalho, o resultado esperado é uma pasta existente e vazia no mesmo caminho. As subpastas dentro dela também são conteúdo de saída, então são removidas junto com o que contêm. Se o diretório de saída contiver modelos ou uma estrutura permanente de subpastas, este script específico precisa de uma regra de seleção diferente antes de ser usado.

O destino do exemplo é Shortcut Output Demo, diretamente dentro da sua pasta pessoal. Manter o destino fixo facilita inspecionar o Atalho: o comportamento não depende da janela do Finder que estiver aberta nem do arquivo selecionado.

Requisito Comportamento neste passo a passo
Preservar a pasta de saída Apenas os caminhos dos itens nela contidos são passados para rm
Incluir conteúdo oculto A opção dotglob do Bash inclui nomes iniciados por ponto
Lidar com uma pasta já vazia Uma lista vazia de itens é aceita
Lidar com uma pasta inexistente Interrompe com um erro; não a recria
Remover conteúdo de saída aninhado Remove recursivamente cada subpasta contida nela
Manter a possibilidade de usar Repor no Finder Use a alternativa do Finder abaixo

O Finder oferece uma alternativa útil quando você quer que os itens permaneçam no Lixo. Abra a pasta de saída, selecione os itens descartáveis dentro dela e pressione Command-Delete. Não selecione a pasta que os contém. A Apple documenta que os itens movidos para o Lixo permanecem lá até que ele seja esvaziado e podem ser restaurados com Arquivo > Repor. Apagar arquivos e pastas no Mac

Crie uma pasta descartável para a primeira execução

Abra o Terminal e cole o bloco de configuração completo abaixo. Ele cria apenas arquivos de texto sintéticos. O comando inicial mkdir precisa ser executado com sucesso antes que qualquer arquivo seja gravado, portanto, se já existir um arquivo ou uma pasta chamada Shortcut Output Demo, a configuração será interrompida em vez de reutilizar o conteúdo existente.

/bin/bash <<'BASH'
set -eu
target="$HOME/Shortcut Output Demo"

if ! /bin/mkdir "$target"; then
  printf 'Setup stopped: choose an unused demo folder name.\n' >&2
  exit 1
fi

/bin/mkdir "$target/Batch"
printf 'Synthetic output A\n' > "$target/alpha.txt"
printf 'Synthetic output B\n' > "$target/sample output.txt"
printf 'Synthetic marker\n' > "$target/.demo-marker"
printf 'Synthetic nested output\n' > "$target/Batch/nested.txt"
printf 'Created disposable examples in: %s\n' "$target"
BASH

Abra sua pasta pessoal no Finder e localize Shortcut Output Demo. Ela contém três itens visíveis: alpha.txt, sample output.txt e Batch. O quarto item, .demo-marker, fica oculto de propósito. Dentro de Batch está nested.txt. Esses são exemplos de entradas de teste, não arquivos existentes do usuário.

Se a configuração for interrompida porque o nome já existe, deixe esse item como está. Escolha outro nome de demonstração que ainda não esteja em uso e altere a atribuição do destino tanto na configuração quanto no script de limpeza para que correspondam. Não remova a verificação de criação inicial apenas para contornar o conflito de nomes.

Crie o Atalho e preserve os tipos de entrada e saída

No app Atalhos, clique no botão de adicionar para criar um atalho e dê a ele o nome Clear Demo Output. Procure Run Shell Script na lista de ações e adicione essa ação. A Apple documenta como criar atalhos adicionando ações e como pesquisar ações pelo nome na lista. Crie um atalho personalizado no Mac, Navegue pela lista de ações no Atalhos no Mac

Defina Shell como /bin/bash e substitua os comandos de exemplo pelo script de limpeza completo abaixo. Este script usa matrizes do Bash e shopt, então mantenha essa seleção de shell. Ele lê o destino da atribuição no script; não consome a entrada do Atalho, a entrada padrão nem argumentos da linha de comando.

Se os scripts estiverem desativados, escolha Atalhos > Ajustes, abra Avançado e ative Permitir execução de scripts. A Apple documenta esse ajuste para executar scripts a partir de atalhos. Ajuste da Apple para execução de scripts

set -u
target="$HOME/Shortcut Output Demo"

if [[ ! -d "$target" || -L "$target" ]]; then
  printf 'Expected an existing ordinary folder: %s\n' "$target" >&2
  exit 1
fi

if [[ ! -r "$target" || ! -x "$target" ]]; then
  printf 'Cannot list the output folder.\n' >&2
  exit 1
fi

unset GLOBIGNORE
set +f
shopt -u failglob
shopt -s dotglob nullglob

items=( "$target"/* )
for item in "${items[@]}"; do
  if ! /bin/rm -R -- "$item"; then
    printf 'Clearing stopped; some items may remain.\n' >&2
    exit 1
  fi
done

remaining=( "$target"/* )
if (( ${#remaining[@]} != 0 )); then
  printf 'The folder still contains items.\n' >&2
  exit 1
fi

printf 'Folder is empty: %s\n' "$target"

A saída de uma execução bem-sucedida da ação é texto: uma linha que começa com Folder is empty:. Ela não é um objeto Pasta, uma lista de arquivos apagados nem uma referência ao diretório reutilizável. Se você ampliar o Atalho depois, forneça explicitamente a pasta de destino a qualquer ação que espere uma pasta. O painel de informações de uma ação identifica a entrada aceita e a saída produzida; clique com a tecla Control no ícone de uma ação e escolha Mostrar Informações para inspecioná-la. Veja informações sobre a entrada e a saída de uma ação

Para exibir uma mensagem de conclusão, adicione Show Alert após o script e insira a variável de saída do script na mensagem. A Apple documenta como passar a saída de uma ação anterior para Show Alert para inspeção. Uma mensagem fixa dizendo que a pasta está vazia forneceria informações menos úteis do que a exibição do resultado real do script. Use a ação Show Alert em um atalho no Mac

Entenda por que a pasta permanece

A atribuição items=( "$target"/* ) coleta os caminhos dos itens contidos na pasta. O loop passa cada item separadamente para rm; ele nunca passa \"$target\". Portanto, a remoção recursiva se aplica às subpastas de saída e deixa intacta a pasta pai reutilizável.

Duas opções do Bash lidam com problemas comuns ao redefinir a pasta. dotglob inclui nomes de arquivo iniciados por ponto, e nullglob faz com que um padrão sem correspondência não produza nenhum resultado. A expansão de matriz entre aspas mantém nomes de arquivo com espaços como argumentos individuais. Esses comportamentos estão documentados no manual do Bash distribuído pela Apple. Manual do Bash: expansão de nomes de caminho e matrizes

O comando de remoção usa -R para pastas aninhadas e -- para encerrar a análise de opções. Ele verifica o resultado de cada comando e interrompe em caso de falha. O manual da Apple sobre rm especifica um status de saída diferente de zero quando ocorre um erro. A remoção não é uma transação: uma falha em um item posterior não restaura os itens já removidos. Manual da Apple sobre rm

O script também rejeita um destino que seja um link simbólico. Use este exemplo apenas com uma pasta de saída local comum, sem volumes montados dentro dela. Interrompa qualquer processo que esteja gerando conteúdo antes da limpeza: arquivos criados durante ou depois da execução podem invalidar a expectativa de que a pasta permaneça vazia.

Verifique a primeira execução e as seguintes

Execute o Atalho usando o botão de execução do editor. Antes de adaptar o caminho de destino, confira o resultado nesta sequência. A Apple documenta como testar um atalho personalizado no editor. Teste um atalho personalizado

  1. Confirme no Finder que Shortcut Output Demo ainda existe.
  2. Confirme que os arquivos de exemplo visíveis e a pasta Batch desapareceram.
  3. Confirme que o script retornou a mensagem de pasta vazia; a verificação final inclui itens ocultos.
  4. Execute o Atalho novamente. Uma pasta já vazia deve produzir a mesma mensagem.
  5. Renomeie temporariamente a pasta de demonstração vazia e execute o Atalho de novo. O script deve ser interrompido com o erro de pasta existente. Depois, restaure o nome.

O script de limpeza passou em uma verificação de sintaxe do Bash com bash -n. Ele não foi executado no Atalhos do macOS para este artigo, portanto, a sequência descartável da primeira execução continua fazendo parte da configuração.

Se a remoção falhar, inspecione o item relatado e o conteúdo restante da pasta antes de tentar novamente. Um destino inexistente, um diretório sem permissão de leitura e uma remoção malsucedida são condições distintas; o script não as transforma em uma mensagem de sucesso.

Reutilize a pasta sem presumir como conflitos serão tratados

Quando o teste descartável se comportar como esperado, altere a atribuição do destino para a pasta de saída escolhida. Revise o conteúdo primeiro e mantenha o mesmo pressuposto: tudo que estiver dentro dela é conteúdo de saída substituível, inclusive itens ocultos e subpastas.

Limpar uma pasta remove os nomes existentes naquele momento. Isso não define o que uma exportação ou ação de salvamento posterior fará se dois novos itens de saída tiverem o mesmo nome. Confira as opções e a descrição da própria ação, em vez de presumir que essa limpeza permite substituir, mesclar ou renomear automaticamente os itens. A Apple fornece descrições das ações por meio de Show Info. Inspecione o comportamento de uma ação

Você também pode executar o Atalho salvo no Terminal com o comando completo abaixo. A Apple documenta como colocar entre aspas nomes de atalhos que contenham espaços e informa que o comando shortcuts retorna 0 em caso de sucesso ou 1 em caso de erro. Execute atalhos pela linha de comando

shortcuts run "Clear Demo Output"

Siga uma sequência deliberada para limpar e gerar conteúdo: conclua o lote anterior, limpe a pasta escolhida, confira o resultado e só então crie o próximo lote. Assim, a pasta reutilizável tem uma finalidade clara e as execuções repetidas são previsíveis.

Fontes