Encontre e execute na pasta encontrada

2

Estou tentando encontrar arquivos contendo * .nef e movê-los para um nome de subdiretório NEF da pasta na qual o arquivo está localizado.

Eu comecei a testar com o seguinte comando, mas isso sempre copia para meu diretório atual, que é minha pasta pessoal.

find testfolder/*.nef -exec mv NEF \;

Na seção man find, eu li sobre o uso de -execdir , mas usar isso em vez de -exec ainda tem o mesmo resultado.

Portanto, a questão é: como posso assumir dinamicamente o diretório encontrado atualmente e os arquivos mv encontrados em uma pasta de subdiretório chamada NEF? (que ainda não existe)

Obrigado antecipadamente!

    
por fairlynuts 13.07.2014 / 08:44

2 respostas

3

Você estava certo em considerar -execdir . Algo simples como o abaixo deve funcionar

find testfolder/ -name '*.nef' -execdir mkdir -p NEF \; -execdir mv {} NEF/ \; 
    
por BroSlow 21.07.2014 / 08:18
2

Tente:

find  testfolder/ -iname "*.nef" -exec bash -c 'mkdir $(dirname "{}")/NEF ; mv "{}" $(dirname "{}")/NEF/' \;

dirname usado para extrair o caminho do resultado e usá-lo para criar um novo subdiretório antes de mover o arquivo.

    
por user.dz 13.07.2014 / 10:04