Às vezes você precisa remove quase todos os arquivos de um diretório, mas você deseja manter um ou alguns deles. Quando há um grande número deles, ir um por um é uma tarefa tediosa. Não é a melhor opção, existem maneiras de tornar o trabalho no Linux muito mais fácil e você pode eliminar todas as que precisa de uma vez.
Por exemplo, você pode querer remover apenas aqueles que começam com um determinado nome ou aqueles que têm uma extensão específica e assim por diante. Tudo que é possivelNa verdade, em outras ocasiões, já mostrei tutoriais semelhantes no LxA. Aqui você poderá seguir o tutorial passo a passo e de forma simples para poder deletar todos os arquivos que desejar, exceto o que deseja salvar.
E o melhor é que você não precisará instalar nenhum programa, isso pode ser feito facilmente com comandos como rm e find. Ou seja, programas que já estão pré-instalados em qualquer distribuição Linux. E, claro, o método será baseado em encontrar padrões e usar essas correspondências para remover apenas o que você deseja.
Bem, a fim de eliminar lá várias alternativas, que são…
Remova arquivos de um diretório com rm
Bem, para usar o comando rm Para eliminar o que você sente, você deve conhecer antes algumas maneiras de identificar padrões:
- * (lista de padrões) - corresponde a zero ou mais ocorrências dos padrões especificados
- ? (lista de padrões) - corresponde a zero ou uma ocorrência dos padrões especificados
- + (lista de padrões) - corresponde a uma ou mais ocorrências dos padrões especificados
- @ (lista de padrões) - corresponde a um dos padrões especificados
- ! (lista de padrões) - corresponde a qualquer coisa, exceto um dos padrões fornecidos
Pára ativar extglob Para usá-los, você deve primeiro executar o seguinte comando:
<br data-mce-bogus="1"> shopt -s extglob<br data-mce-bogus="1">
Agora você pode usar rm para remover o que quiser. Por exemplo, exclua todos os arquivos de um diretório, exceto aqueles que correspondem ao nome «Lxa»:
rm -v !("lxa")
Você também pode especificar dois ou mais nomes que você não deseja excluir. Por exemplo, para evitar a remoção de "lxa" e "desdelinux":
rm -v !("lxa"|"desdelinux")
Você pode excluir todos os arquivos, menos aqueles com extensão .mp3. Por exemplo:
rm -v !(*.mp3)
No final, você pode voltar para desabilitar extglob:
shopt -u extglob
Remova arquivos de um diretório com encontrar
Outra alternativa para rm é use find para remover tudo o que quiser. Você pode usar um pipe e xargs com rm ou usar a opção -delete para localizar. Ou seja, a sintaxe genérica seria:
find /directory/ -type f -not -name 'PATRÓN' -delete find /directory/ -type f -not -name 'PATRÓN' -print0 | xargs -0 -I {} rm [opciones] {}
Por exemplo, imagine que você quer exclua todos os arquivos em um diretório, exceto aqueles com a extensão .jpg, você pode usar um desses dois comandos, já que ambos obtêm o mesmo resultado:
find . -type f -not -name '*.jpg'-delete find . -type f -not -name '*.jpg' -print0 | xargs -0 -I {} rm -v {}
Em vez disso, se você quisesse adicione algum padrão extra, você também poderia. Por exemplo, suponha que você não queira remover o .pdf ou .odt de um diretório:
find . -type f -not \(-name '*pdf' -or -name '*odt' \) -delete
Claro, você pode fazer o mesmo com | e xargs como no exemplo anterior. A propósito, nós usamos - para não negar, mas você pode remover isso para torná-lo positivo, ou seja, remover os padrões correspondentes e não excluí-los.
Exclua arquivos de um diretório usando a variável GLOBIGNORE
Finalmente, existe Outra alternativa para localizar e rm, e está usando uma variável de ambiente para apontar para os arquivos que você deseja remover ou excluir. Por exemplo, imagine que você deseja excluir todos os arquivos de um diretório chamado Downloads, salvando os arquivos .pdf, .mp3 e .mp4. Nesse caso, você pode fazer o seguinte:
cd Descargas GLOBIGNORE=*.pdf:*.mp4:.*mp3 rm -v * unset GLOBIGNORE