Não se esqueça de ver programas como o lixo-cli para que você possa cancelar a exclusão, em vez de usar o rm. code.google.com/p/trash-cli (Você acabou de substituir 'rm' por 'lixo' em todas as respostas abaixo).
Respostas:
137
Remova todos os arquivos * .swp abaixo do diretório atual, use o findcomando de uma das seguintes formas:
find . -name \*.swp -type f -delete
A -deleteopção significa que find excluirá diretamente os arquivos correspondentes. Essa é a melhor correspondência para a pergunta real do OP.
Usar -type fmeios find processará apenas arquivos.
A opção -execpermite localizar para executar um comando arbitrário por arquivo. A primeira variante executará o comando uma vez por arquivo e a segunda executará o menor número possível de comandos, substituindo o {}maior número possível de parâmetros.
O canal da saída xargsé usado para formar comandos por arquivo mais complexos do que é possível com -exec. A opção -print0diz findpara separar correspondências com ASCII NULL em vez de uma nova linha e -0diz xargspara esperar uma entrada separada por NULL. Isso torna a construção do pipe segura para nomes de arquivos que contêm espaço em branco.
Depois de encontrar find delete, remova qualquer risco de espaço incorporado no nome do arquivo, ... Para segurança extra, considere adicionar -type fapenas arquivos.
Para pesquisar no meu diretório pessoal (e usando o GNU 'find' e 'xargs'), eu usaria:
find $HOME -name '*.swp' -print0 | xargs -0 rm -f
O uso de ' -print0' e ' -0' significa que os nomes serão delimitados por caracteres ASCII NUL '\ 0', e isso manipulará os caminhos de arquivos com espaços em branco etc. nos nomes. Se você acha que pode ter diretórios (ou arquivos de dispositivo, ou FIFOs ou outros que não sejam arquivos) no diretório que termina com '.swp', você pode adicionar a -type fopção ' ' para 'localizar'. Se você tiver apenas diretórios, o comando acima falhará ao removê-los ruidosamente.
Respostas:
Remova todos os arquivos * .swp abaixo do diretório atual, use o
find
comando de uma das seguintes formas:find . -name \*.swp -type f -delete
A
-delete
opção significa que find excluirá diretamente os arquivos correspondentes. Essa é a melhor correspondência para a pergunta real do OP.Usar
-type f
meios find processará apenas arquivos.find . -name \*.swp -type f -exec rm -f {} \;
find . -name \*.swp -type f -exec rm -f {} +
A opção
-exec
permite localizar para executar um comando arbitrário por arquivo. A primeira variante executará o comando uma vez por arquivo e a segunda executará o menor número possível de comandos, substituindo o{}
maior número possível de parâmetros.find . -name \*.swp -type f -print0 | xargs -0 rm -f
O canal da saída
xargs
é usado para formar comandos por arquivo mais complexos do que é possível com-exec
. A opção-print0
dizfind
para separar correspondências com ASCII NULL em vez de uma nova linha e-0
dizxargs
para esperar uma entrada separada por NULL. Isso torna a construção do pipe segura para nomes de arquivos que contêm espaço em branco.Veja
man find
para mais detalhes e exemplos.fonte
find . -name '*.swp' -delete
Depois de encontrar find delete, remova qualquer risco de espaço incorporado no nome do arquivo, ... Para segurança extra, considere adicionar
-type f
apenas arquivos.fonte
bash 4.0
fonte
Para pesquisar no meu diretório pessoal (e usando o GNU 'find' e 'xargs'), eu usaria:
O uso de '
-print0
' e '-0
' significa que os nomes serão delimitados por caracteres ASCII NUL '\ 0', e isso manipulará os caminhos de arquivos com espaços em branco etc. nos nomes. Se você acha que pode ter diretórios (ou arquivos de dispositivo, ou FIFOs ou outros que não sejam arquivos) no diretório que termina com '.swp', você pode adicionar a-type f
opção ' ' para 'localizar'. Se você tiver apenas diretórios, o comando acima falhará ao removê-los ruidosamente.fonte