Como você pode mover (ou copiar) todos os arquivos de um determinado tipo para um diretório no Unix?

1

Ainda não estou muito familiarizado com todos os truques do grep / find / awk / xargs, por isso seja paciente comigo =]

Eu tenho um tipo de arquivo específico que diz * .xxx, em lugares aleatórios ao longo de um determinado diretório. Como posso encontrar todos esses arquivos e movê-los para uma pasta no meu diretório pessoal no Unix (que talvez ainda não exista)?

    
por qodeninja 02.02.2012 / 22:18

1 resposta

4

Use find com a opção exec , mas primeiro crie a pasta de destino.

mkdir -p /home/somewhere/else
find /somewhere -iname "*.xxx"

Isto irá listar tudo o que seria movido. Agora, se você tem certeza de que esses são os arquivos que deseja mover, execute o seguinte:

find /somewhere -iname "*.xxx" -exec mv '{}' /home/somewhere/else/ \;

Na linha exec , '{}' será substituído pelo nome real do arquivo e será movido para o destino. Da mesma forma, para copiar, apenas troque mv por cp . O \; é necessário para finalizar o comando.

Se você quiser uma confirmação antes de cada operação de arquivo que substituiria um arquivo já existente, poderá adicionar a opção -i após mv ou cp , respectivamente.

Não há necessidade de grep , xargs e seus gostos. Isso complicaria desnecessariamente as coisas.

    
por 02.02.2012 / 22:34