Ainda não estou muito familiarizado com todos os truques do grep/find/awk/xargs, então seja paciente comigo =]
Eu tenho um tipo de arquivo específico, como *.xxx, em locais aleatórios em um determinado diretório. Como posso encontrar todos esses arquivos e movê-los para uma pasta no meu diretório pessoal no Unix (que pode ainda não existir)?
Responder1
Use find
com a exec
opção, mas primeiro crie a pasta de destino.
mkdir -p /home/somewhere/else
find /somewhere -iname "*.xxx"
Isso listará tudo o que seria movido. Agora, se você tiver certeza de que esses são os arquivos que deseja mover, execute o seguinte:
find /somewhere -iname "*.xxx" -exec mv '{}' /home/somewhere/else/ \;
Na exec
linha, '{}'
será substituído pelo nome real do arquivo e será movido para o destino. Da mesma forma, para copiar, basta trocar mv
com cp
. O \;
é necessário para encerrar o comando.
Se desejar uma confirmação antes de cada operação de arquivo que sobrescreva um arquivo já existente, você pode adicionar a -i
opção após mv
ou cp
, respectivamente.
Não há necessidade de grep
e xargs
seus gostos. Isso complicaria desnecessariamente as coisas.