Preciso encontrar todos os arquivos começando com o nome NAME
em uma árvore de diretórios e remover todos esses arquivos usando um comando shell.
Preciso encontrar todos os arquivos começando com o nome NAME
em uma árvore de diretórios e remover todos esses arquivos usando um comando shell.
Respostas:
para excluir todos os arquivos cujo nome tem nome --- você pode usar
find -name . 'name*' -exec rm {} \;
grep
possui um -exec
switch?
Exclua todos os arquivos no diretório atual e seus subdiretórios onde o nome do arquivo começa com "foo":
$ find . -type f -name foo\* -exec rm {} \;
NB: use com cuidado - faça o backup primeiro - também faça um teste a seco primeiro, por exemplo
$ find . -type f -name foo\*
apenas informará os nomes dos arquivos que seriam excluídos.
find . -type f -name foo\* -delete
fez o truque
Eu tentei dessa maneira, está funcionando para mim, tente abaixo do comando.
rm -rf Example*
aqui "Exemplo" é um texto comum a todos os arquivos.
Você pode usar find
:
find . -name "name*" -exec rm {} \;
Com a globstar
opção (ativar com shopt -s globstar
):
rm -f **/NAME*
**/
Expande para ./
, */
, */*/
, */*/*/
etc. Se você tem um diretório de nome começando com NAME
, o comando se queixam de que rm
não é possível remover diretórios, mas isso é tudo.
Observe que isso pode ter limitações de comprimento de linha de comando se o glob corresponder a muitos arquivos.
Como alternativa, com o mínimo de invocações rm
possível, mas não sujeito a nenhuma limitação de comprimento de linha de comando:
find . -type f -name 'NAME*' -exec rm -f {} +
(Observe o em +
vez de \;
fechar a -exec
instrução.)
find . -name 'foo'* -type f -delete
parece ser a resposta mais simples.
Você pode executar isso sem o -delete
sinalizador antes para ver quais arquivos serão excluídos.
Procure o número "Inode" do arquivo / pasta e exclua usando o número do inode. Abaixo está um exemplo:
ls -il
3407873 drwxr-xr-x. 2 root root 4096 Mar 30 07:49 –p
find . -inum 3407873 -exec rm -rf {} \;