shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] mover resultado do find para um diretório !


From: Felipe Kellermann
Subject: Re: [shell-script] mover resultado do find para um diretório !
Date: Tue, 28 Feb 2006 23:45:18 -0300 (BRT)
User-agent: Pine <http://www.washington.edu/pine/>

On Tue, 28 Feb 2006 11:41pm  -0300, Thiago dos Santos wrote:

> fala pessoal, agradeço ajuda de todos desde já !
> vou colocar a questão original p/ ver se fica mais fácil:
> 
> Create a bash script that searches for Windows executables on the shares. If
> an executable is found, the file should be moved to a directory outside of
> the share and a mail should be sent to the root of the Samba server.
> Depending on your programing skills, you can choose one of the following
> methods to determine if a file is a Windows executable:
> * Search for file extensions such as .exe or .com (not a secure solution)
> * Identify the file type using the command file.

Ah, OK...

Tu pode repetir todos os `find' que citei adicionando:

  -iname '*.com' -or -iname '*.exe'


Percebeu? Por exemplo:

  % find /diretorio -type f -iname '*.com' -or -iname '*.exe' \
    -exec mv {} /outro/diretorio \;

Ou,

  % find /diretorio -type f -print0 -iname '*.com' -or -iname '*.exe' \
    xargs -I % -0 mv % /outro/diretorio

Ou,

  % find /diretorio -type f -iname '*.com' -or -iname '*.exe' | xargs mv \
    --target-directory=/outro/diretorio


Se tu quiser adicionar (ou só usar isto) a verificação do bit de execução 
nos finds do exemplo, adiciona a opção -perm,

   (...) -type f -perm +u=x,g=x,o=x



Se quiser/puder optar por zsh, pode fazer o primeiro com:
(Move todos arquivos de diretorio/ que acabam com .com ou .exe e que são 
 arquivos normais para /outro/diretorio):

  % mv /diretorio/**/(*.{com,exe})(.) /outro/diretorio


O segundo com:
(Move todos arquivos de diretorio/ que são arquivos normais e que têm o 
 bit de execução ligado ou para o dono, grupo ou outros):

  % mv /diretorio/**/(.x) /outro/diretorio


Ou opcionalmente juntar os dois:
(Move todos arquivos de diretorio/ que acabam com .com ou .exe e que são
 arquivos normais com o bit de execução ligado ou para o dono, ou para o 
 grupo, ou para outros, e que o nome acaba com .com ou .exe):

  % mv /diretorio/**/(*.{com,exe})(.x) /outro/diretorio

-- 
Felipe Kellermann


reply via email to

[Prev in Thread] Current Thread [Next in Thread]